Changeset b4ca0a9c in mainline for uspace/srv


Ignore:
Timestamp:
2012-07-10T11:53:50Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1e01a35
Parents:
a33706e (diff), 33fc3ae (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

Location:
uspace/srv
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/ata_bd/ata_bd.c

    ra33706e rb4ca0a9c  
    191191        }
    192192
    193         printf(NAME ": Accepting connections\n");
     193        printf("%s: Accepting connections\n", NAME);
    194194        task_retval(0);
    195195        async_manager();
     
    243243static int ata_bd_init(void)
    244244{
     245        async_set_client_connection(ata_bd_connection);
     246        int rc = loc_server_register(NAME);
     247        if (rc != EOK) {
     248                printf("%s: Unable to register driver.\n", NAME);
     249                return rc;
     250        }
     251       
    245252        void *vaddr;
    246         int rc;
    247        
    248         async_set_client_connection(ata_bd_connection);
    249         rc = loc_server_register(NAME);
    250         if (rc < 0) {
    251                 printf(NAME ": Unable to register driver.\n");
    252                 return rc;
    253         }
    254 
    255253        rc = pio_enable((void *) cmd_physical, sizeof(ata_cmd_t), &vaddr);
    256254        if (rc != EOK) {
    257                 printf(NAME ": Could not initialize device I/O space.\n");
     255                printf("%s: Could not initialize device I/O space.\n", NAME);
    258256                return rc;
    259257        }
    260 
     258       
    261259        cmd = vaddr;
    262 
     260       
    263261        rc = pio_enable((void *) ctl_physical, sizeof(ata_ctl_t), &vaddr);
    264262        if (rc != EOK) {
    265                 printf(NAME ": Could not initialize device I/O space.\n");
     263                printf("%s: Could not initialize device I/O space.\n", NAME);
    266264                return rc;
    267265        }
    268 
     266       
    269267        ctl = vaddr;
    270 
    271 
     268       
    272269        return EOK;
    273270}
     
    311308
    312309        (void) async_share_out_finalize(callid, &fs_va);
    313         if (fs_va == (void *) -1) {
     310        if (fs_va == AS_MAP_FAILED) {
    314311                async_answer_0(callid, EHANGUP);
    315312                return;
  • uspace/srv/bd/file_bd/file_bd.c

    ra33706e rb4ca0a9c  
    119119        rc = loc_service_register(device_name, &service_id);
    120120        if (rc != EOK) {
    121                 printf(NAME ": Unable to register device '%s'.\n",
    122                         device_name);
     121                printf("%s: Unable to register device '%s'.\n",
     122                    NAME, device_name);
    123123                return rc;
    124124        }
    125 
    126         printf(NAME ": Accepting connections\n");
     125       
     126        printf("%s: Accepting connections\n", NAME);
    127127        task_retval(0);
    128128        async_manager();
    129 
     129       
    130130        /* Not reached */
    131131        return 0;
     
    139139static int file_bd_init(const char *fname)
    140140{
    141         int rc;
    142         long img_size;
    143        
    144141        async_set_client_connection(file_bd_connection);
    145         rc = loc_server_register(NAME);
    146         if (rc < 0) {
    147                 printf(NAME ": Unable to register driver.\n");
     142        int rc = loc_server_register(NAME);
     143        if (rc != EOK) {
     144                printf("%s: Unable to register driver.\n", NAME);
    148145                return rc;
    149146        }
    150 
     147       
    151148        img = fopen(fname, "rb+");
    152149        if (img == NULL)
    153150                return EINVAL;
    154 
     151       
    155152        if (fseek(img, 0, SEEK_END) != 0) {
    156153                fclose(img);
    157154                return EIO;
    158155        }
    159 
    160         img_size = ftell(img);
     156       
     157        off64_t img_size = ftell(img);
    161158        if (img_size < 0) {
    162159                fclose(img);
    163160                return EIO;
    164161        }
    165 
     162       
    166163        num_blocks = img_size / block_size;
    167 
     164       
    168165        fibril_mutex_initialize(&dev_lock);
    169 
     166       
    170167        return EOK;
    171168}
     
    192189
    193190        (void) async_share_out_finalize(callid, &fs_va);
    194         if (fs_va == (void *) -1) {
     191        if (fs_va == AS_MAP_FAILED) {
    195192                async_answer_0(callid, EHANGUP);
    196193                return;
  • uspace/srv/bd/gxe_bd/gxe_bd.c

    ra33706e rb4ca0a9c  
    122122static int gxe_bd_init(void)
    123123{
     124        async_set_client_connection(gxe_bd_connection);
     125        int rc = loc_server_register(NAME);
     126        if (rc != EOK) {
     127                printf("%s: Unable to register driver.\n", NAME);
     128                return rc;
     129        }
     130       
    124131        void *vaddr;
    125         int rc, i;
    126         char name[16];
    127        
    128         async_set_client_connection(gxe_bd_connection);
    129         rc = loc_server_register(NAME);
    130         if (rc < 0) {
    131                 printf(NAME ": Unable to register driver.\n");
    132                 return rc;
    133         }
    134 
    135132        rc = pio_enable((void *) dev_physical, sizeof(gxe_bd_t), &vaddr);
    136133        if (rc != EOK) {
    137                 printf(NAME ": Could not initialize device I/O space.\n");
     134                printf("%s: Could not initialize device I/O space.\n", NAME);
    138135                return rc;
    139136        }
    140 
     137       
    141138        dev = vaddr;
    142 
    143         for (i = 0; i < MAX_DISKS; i++) {
    144                 snprintf(name, 16, "%s/disk%d", NAMESPACE, i);
     139       
     140        for (unsigned int i = 0; i < MAX_DISKS; i++) {
     141                char name[16];
     142               
     143                snprintf(name, 16, "%s/disk%u", NAMESPACE, i);
    145144                rc = loc_service_register(name, &service_id[i]);
    146145                if (rc != EOK) {
    147                         printf(NAME ": Unable to register device %s.\n", name);
     146                        printf("%s: Unable to register device %s.\n", NAME,
     147                            name);
    148148                        return rc;
    149149                }
     150               
    150151                fibril_mutex_initialize(&dev_lock[i]);
    151152        }
    152 
     153       
    153154        return EOK;
    154155}
     
    195196
    196197        (void) async_share_out_finalize(callid, &fs_va);
    197         if (fs_va == (void *) -1) {
     198        if (fs_va == AS_MAP_FAILED) {
    198199                async_answer_0(callid, EHANGUP);
    199200                return;
  • uspace/srv/bd/part/guid_part/guid_part.c

    ra33706e rb4ca0a9c  
    170170                return rc;
    171171        }
    172 
     172       
    173173        /*
    174174         * Create partition devices.
     
    350350
    351351        (void) async_share_out_finalize(callid, &fs_va);
    352         if (fs_va == (void *) -1) {
     352        if (fs_va == AS_MAP_FAILED) {
    353353                async_answer_0(callid, EHANGUP);
    354354                return;
  • uspace/srv/bd/part/mbr_part/mbr_part.c

    ra33706e rb4ca0a9c  
    427427
    428428        (void) async_share_out_finalize(callid, &fs_va);
    429         if (fs_va == (void *) -1) {
     429        if (fs_va == AS_MAP_FAILED) {
    430430                async_answer_0(callid, EHANGUP);
    431431                return;
  • uspace/srv/bd/rd/rd.c

    ra33706e rb4ca0a9c  
    106106        if (async_share_out_receive(&callid, &comm_size, &flags)) {
    107107                (void) async_share_out_finalize(callid, &fs_va);
    108                 if (fs_va == (void *) -1) {
     108                if (fs_va == AS_MAP_FAILED) {
    109109                        async_answer_0(callid, EHANGUP);
    110110                        return;
     
    237237        async_set_client_connection(rd_connection);
    238238        ret = loc_server_register(NAME);
    239         if (ret < 0) {
     239        if (ret != EOK) {
    240240                printf("%s: Unable to register driver (%d)\n", NAME, ret);
    241241                return false;
  • uspace/srv/clipboard/clipboard.c

    ra33706e rb4ca0a9c  
    181181       
    182182        async_set_client_connection(clip_connection);
    183        
    184         if (service_register(SERVICE_CLIPBOARD) != EOK)
    185                 return -1;
     183        int rc = service_register(SERVICE_CLIPBOARD);
     184        if (rc != EOK)
     185                return rc;
    186186       
    187187        printf("%s: Accepting connections\n", NAME);
  • uspace/srv/devman/devman.h

    ra33706e rb4ca0a9c  
    210210};
    211211
    212 
    213212/** Represents device tree. */
    214213typedef struct dev_tree {
  • uspace/srv/devman/main.c

    ra33706e rb4ca0a9c  
    245245       
    246246        fibril_rwlock_write_lock(&device_tree.rwlock);
    247 
     247       
    248248        if (fun->state == FUN_ON_LINE) {
    249249                fibril_rwlock_write_unlock(&device_tree.rwlock);
     
    259259                        return ENOMEM;
    260260                }
    261 
     261               
    262262                insert_dev_node(&device_tree, dev, fun);
    263263                dev_add_ref(dev);
     
    272272                /* Give one reference over to assign_driver_fibril(). */
    273273                dev_add_ref(dev);
     274               
    274275                /*
    275276                 * Try to find a suitable driver and assign it to the device.  We do
     
    288289                }
    289290                fibril_add_ready(assign_fibril);
    290         } else {
     291        } else
    291292                loc_register_tree_function(fun, &device_tree);
    292         }
    293293       
    294294        fibril_rwlock_write_unlock(&device_tree.rwlock);
     
    419419       
    420420        /* Check that function with same name is not there already. */
    421         if (find_fun_node_in_device(tree, pdev, fun_name) != NULL) {
     421        fun_node_t *tfun = find_fun_node_in_device(tree, pdev, fun_name);
     422        if (tfun) {
     423                fun_del_ref(tfun);      /* drop the new unwanted reference */
    422424                fibril_rwlock_write_unlock(&tree->rwlock);
    423425                dev_del_ref(pdev);
     
    855857}
    856858
     859/** Get function driver name. */
     860static void devman_fun_get_driver_name(ipc_callid_t iid, ipc_call_t *icall)
     861{
     862        devman_handle_t handle = IPC_GET_ARG1(*icall);
     863
     864        fun_node_t *fun = find_fun_node(&device_tree, handle);
     865        if (fun == NULL) {
     866                async_answer_0(iid, ENOMEM);
     867                return;
     868        }
     869
     870        ipc_callid_t data_callid;
     871        size_t data_len;
     872        if (!async_data_read_receive(&data_callid, &data_len)) {
     873                async_answer_0(iid, EINVAL);
     874                fun_del_ref(fun);
     875                return;
     876        }
     877
     878        void *buffer = malloc(data_len);
     879        if (buffer == NULL) {
     880                async_answer_0(data_callid, ENOMEM);
     881                async_answer_0(iid, ENOMEM);
     882                fun_del_ref(fun);
     883                return;
     884        }
     885
     886        fibril_rwlock_read_lock(&device_tree.rwlock);
     887
     888        /* Check function state */
     889        if (fun->state == FUN_REMOVED) {
     890                fibril_rwlock_read_unlock(&device_tree.rwlock);
     891                free(buffer);
     892
     893                async_answer_0(data_callid, ENOENT);
     894                async_answer_0(iid, ENOENT);
     895                fun_del_ref(fun);
     896                return;
     897        }
     898
     899        /* Check whether function has a driver */
     900        if (fun->child == NULL || fun->child->drv == NULL) {
     901                fibril_rwlock_read_unlock(&device_tree.rwlock);
     902                free(buffer);
     903
     904                async_answer_0(data_callid, EINVAL);
     905                async_answer_0(iid, EINVAL);
     906                fun_del_ref(fun);
     907                return;
     908        }
     909
     910        size_t sent_length = str_size(fun->child->drv->name);
     911        if (sent_length > data_len) {
     912                sent_length = data_len;
     913        }
     914
     915        async_data_read_finalize(data_callid, fun->child->drv->name,
     916            sent_length);
     917        async_answer_0(iid, EOK);
     918
     919        fibril_rwlock_read_unlock(&device_tree.rwlock);
     920        fun_del_ref(fun);
     921        free(buffer);
     922}
    857923
    858924/** Get device path. */
     
    10831149                        devman_fun_get_name(callid, &call);
    10841150                        break;
     1151                case DEVMAN_FUN_GET_DRIVER_NAME:
     1152                        devman_fun_get_driver_name(callid, &call);
     1153                        break;
    10851154                case DEVMAN_FUN_GET_PATH:
    10861155                        devman_fun_get_path(callid, &call);
     
    11491218                if (dev->pfun->dev != NULL)
    11501219                        driver = dev->pfun->dev->drv;
     1220               
    11511221                fwd_h = dev->pfun->handle;
    11521222        } else if (dev->state == DEVICE_USABLE) {
     
    11541224                driver = dev->drv;
    11551225                assert(driver != NULL);
    1156 
     1226               
    11571227                fwd_h = handle;
    11581228        }
     
    11811251
    11821252        if (fun != NULL) {
    1183                 log_msg(LVL_DEBUG, 
     1253                log_msg(LVL_DEBUG,
    11841254                    "Forwarding request for `%s' function to driver `%s'.",
    11851255                    fun->pathname, driver->name);
    11861256        } else {
    1187                 log_msg(LVL_DEBUG, 
     1257                log_msg(LVL_DEBUG,
    11881258                    "Forwarding request for `%s' device to driver `%s'.",
    11891259                    dev->pfun->pathname, driver->name);
     
    11931263        async_forward_fast(iid, exch, method, fwd_h, 0, IPC_FF_NONE);
    11941264        async_exchange_end(exch);
    1195 
     1265       
    11961266cleanup:
    11971267        if (dev != NULL)
    11981268                dev_del_ref(dev);
     1269       
    11991270        if (fun != NULL)
    12001271                fun_del_ref(fun);
     
    12991370                return false;
    13001371        }
    1301 
     1372       
    13021373        log_msg(LVL_DEBUG, "devman_init - list of drivers has been initialized.");
    1303 
     1374       
    13041375        /* Create root device node. */
    13051376        if (!init_device_tree(&device_tree, &drivers_list)) {
     
    13071378                return false;
    13081379        }
    1309 
     1380       
    13101381        /*
    13111382         * Caution: As the device manager is not a real loc
     
    13221393int main(int argc, char *argv[])
    13231394{
    1324         printf(NAME ": HelenOS Device Manager\n");
    1325 
    1326         if (log_init(NAME, LVL_WARN) != EOK) {
    1327                 printf(NAME ": Error initializing logging subsystem.\n");
    1328                 return -1;
     1395        printf("%s: HelenOS Device Manager\n", NAME);
     1396       
     1397        int rc = log_init(NAME, LVL_WARN);
     1398        if (rc != EOK) {
     1399                printf("%s: Error initializing logging subsystem.\n", NAME);
     1400                return rc;
    13291401        }
    13301402       
     
    13331405        async_set_client_data_destructor(devman_client_data_destroy);
    13341406        async_set_client_connection(devman_connection);
    1335 
     1407       
    13361408        if (!devman_init()) {
    13371409                log_msg(LVL_ERROR, "Error while initializing service.");
    13381410                return -1;
    13391411        }
    1340 
     1412       
    13411413        /* Register device manager at naming service. */
    1342         if (service_register(SERVICE_DEVMAN) != EOK) {
     1414        rc = service_register(SERVICE_DEVMAN);
     1415        if (rc != EOK) {
    13431416                log_msg(LVL_ERROR, "Failed registering as a service.");
    1344                 return -1;
    1345         }
    1346 
    1347         printf(NAME ": Accepting connections.\n");
     1417                return rc;
     1418        }
     1419       
     1420        printf("%s: Accepting connections.\n", NAME);
    13481421        task_retval(0);
    13491422        async_manager();
    1350 
     1423       
    13511424        /* Never reached. */
    13521425        return 0;
  • uspace/srv/fs/fat/fat_dentry.c

    ra33706e rb4ca0a9c  
    4343#include <byteorder.h>
    4444#include <assert.h>
     45#include <unistd.h>
    4546
    4647/** Compare path component with the name read from the dentry.
  • uspace/srv/hid/console/console.c

    ra33706e rb4ca0a9c  
    852852        async_set_client_connection(client_connection);
    853853        int rc = loc_server_register(NAME);
    854         if (rc < 0) {
     854        if (rc != EOK) {
    855855                printf("%s: Unable to register server (%s)\n", NAME,
    856856                    str_error(rc));
  • uspace/srv/hid/fb/fb.c

    ra33706e rb4ca0a9c  
    305305       
    306306        int rc = async_share_out_finalize(callid, &frontbuf->data);
    307         if ((rc != EOK) || (frontbuf->data == (void *) -1)) {
     307        if ((rc != EOK) || (frontbuf->data == AS_MAP_FAILED)) {
    308308                free(frontbuf);
    309309                async_answer_0(iid, ENOMEM);
     
    348348       
    349349        int rc = async_share_out_finalize(callid, &imagemap->data);
    350         if ((rc != EOK) || (imagemap->data == (void *) -1)) {
     350        if ((rc != EOK) || (imagemap->data == AS_MAP_FAILED)) {
    351351                free(imagemap);
    352352                async_answer_0(iid, ENOMEM);
     
    990990        int rc = loc_server_register(NAME);
    991991        if (rc != EOK) {
    992                 printf("%s: Unable to register driver (%d)\n", NAME, rc);
    993                 return 1;
     992                printf("%s: Unable to register driver\n", NAME);
     993                return rc;
    994994        }
    995995       
  • uspace/srv/hid/input/ctl/kbdev.c

    ra33706e rb4ca0a9c  
    6868        /** Link to generic keyboard device */
    6969        kbd_dev_t *kbd_dev;
    70 
     70       
    7171        /** Session with kbdev device */
    7272        async_sess_t *sess;
     
    7575static kbdev_t *kbdev_new(kbd_dev_t *kdev)
    7676{
    77         kbdev_t *kbdev;
    78 
    79         kbdev = calloc(1, sizeof(kbdev_t));
     77        kbdev_t *kbdev = calloc(1, sizeof(kbdev_t));
    8078        if (kbdev == NULL)
    8179                return NULL;
    82 
     80       
    8381        kbdev->kbd_dev = kdev;
    8482
     
    9088        if (kbdev->sess != NULL)
    9189                async_hangup(kbdev->sess);
     90       
    9291        free(kbdev);
    9392}
     
    9594static int kbdev_ctl_init(kbd_dev_t *kdev)
    9695{
    97         async_sess_t *sess;
    98         async_exch_t *exch;
    99         kbdev_t *kbdev;
    100         int rc;
    101 
    102         sess = loc_service_connect(EXCHANGE_SERIALIZE, kdev->svc_id, 0);
     96        async_sess_t *sess = loc_service_connect(EXCHANGE_SERIALIZE,
     97            kdev->svc_id, 0);
    10398        if (sess == NULL) {
    10499                printf("%s: Failed starting session with '%s.'\n", NAME,
    105100                    kdev->svc_name);
    106                 return -1;
     101                return ENOENT;
    107102        }
    108 
    109         kbdev = kbdev_new(kdev);
     103       
     104        kbdev_t *kbdev = kbdev_new(kdev);
    110105        if (kbdev == NULL) {
    111106                printf("%s: Failed allocating device structure for '%s'.\n",
    112107                    NAME, kdev->svc_name);
    113108                async_hangup(sess);
    114                 return -1;
     109                return ENOMEM;
    115110        }
    116 
     111       
    117112        kbdev->sess = sess;
    118 
    119         exch = async_exchange_begin(sess);
     113       
     114        async_exch_t *exch = async_exchange_begin(sess);
    120115        if (exch == NULL) {
    121116                printf("%s: Failed starting exchange with '%s'.\n", NAME,
    122117                    kdev->svc_name);
    123118                kbdev_destroy(kbdev);
    124                 return -1;
     119                return ENOENT;
    125120        }
    126 
    127         rc = async_connect_to_me(exch, 0, 0, 0, kbdev_callback_conn, kbdev);
     121       
     122        int rc = async_connect_to_me(exch, 0, 0, 0, kbdev_callback_conn, kbdev);
    128123        if (rc != EOK) {
    129124                printf("%s: Failed creating callback connection from '%s'.\n",
     
    131126                async_exchange_end(exch);
    132127                kbdev_destroy(kbdev);
    133                 return -1;
     128                return rc;
    134129        }
    135 
     130       
    136131        async_exchange_end(exch);
    137 
     132       
    138133        kdev->ctl_private = (void *) kbdev;
    139134        return 0;
     
    142137static void kbdev_ctl_set_ind(kbd_dev_t *kdev, unsigned mods)
    143138{
    144         async_sess_t *sess;
    145         async_exch_t *exch;
    146 
    147         sess = ((kbdev_t *) kdev->ctl_private)->sess;
    148 
    149         exch = async_exchange_begin(sess);
     139        async_sess_t *sess = ((kbdev_t *) kdev->ctl_private)->sess;
     140        async_exch_t *exch = async_exchange_begin(sess);
    150141        if (!exch)
    151142                return;
    152 
     143       
    153144        async_msg_1(exch, KBDEV_SET_IND, mods);
    154145        async_exchange_end(exch);
  • uspace/srv/hid/input/generic/input.c

    ra33706e rb4ca0a9c  
    662662        async_set_client_connection(client_connection);
    663663        int rc = loc_server_register(NAME);
    664         if (rc < 0) {
    665                 printf("%s: Unable to register server (%d)\n", NAME, rc);
    666                 return -1;
     664        if (rc != EOK) {
     665                printf("%s: Unable to register server\n", NAME);
     666                return rc;
    667667        }
    668668       
     
    671671       
    672672        service_id_t service_id;
    673         if (loc_service_register(kbd, &service_id) != EOK) {
     673        rc = loc_service_register(kbd, &service_id);
     674        if (rc != EOK) {
    674675                printf("%s: Unable to register service %s\n", NAME, kbd);
    675                 return -1;
     676                return rc;
    676677        }
    677678       
  • uspace/srv/hid/input/port/adb.c

    ra33706e rb4ca0a9c  
    6565static int adb_port_init(kbd_dev_t *kdev)
    6666{
     67        kbd_dev = kdev;
     68       
    6769        const char *dev = "adb/kbd";
    6870        service_id_t service_id;
    69         async_exch_t *exch;
    70         int rc;
    71        
    72         kbd_dev = kdev;
    73        
    74         rc = loc_service_get_id(dev, &service_id, 0);
     71        int rc = loc_service_get_id(dev, &service_id, 0);
    7572        if (rc != EOK)
    7673                return rc;
     
    8279        }
    8380       
    84         exch = async_exchange_begin(dev_sess);
     81        async_exch_t *exch = async_exchange_begin(dev_sess);
    8582        if (exch == NULL) {
    8683                printf("%s: Failed starting exchange with device\n", NAME);
     
    8986        }
    9087       
    91         /* NB: The callback connection is slotted for removal */
    9288        rc = async_connect_to_me(exch, 0, 0, 0, kbd_port_events, NULL);
    9389        async_exchange_end(exch);
  • uspace/srv/hid/input/proto/mousedev.c

    ra33706e rb4ca0a9c  
    117117                printf("%s: Failed starting session with '%s'\n", NAME,
    118118                    mdev->svc_name);
    119                 return -1;
     119                return ENOENT;
    120120        }
    121121       
     
    125125                    NAME, mdev->svc_name);
    126126                async_hangup(sess);
    127                 return -1;
     127                return ENOMEM;
    128128        }
    129129       
     
    134134                mousedev_destroy(mousedev);
    135135                async_hangup(sess);
    136                 return -1;
     136                return ENOENT;
    137137        }
    138138       
     
    145145                    NAME, mdev->svc_name);
    146146                mousedev_destroy(mousedev);
    147                 return -1;
     147                return rc;
    148148        }
    149149       
    150         return 0;
     150        return EOK;
    151151}
    152152
  • uspace/srv/hid/remcons/remcons.c

    ra33706e rb4ca0a9c  
    7171        TELNET_IAC, TELNET_WONT, TELNET_LINEMODE
    7272};
     73
    7374static const size_t telnet_force_character_mode_command_count =
    7475    sizeof(telnet_force_character_mode_command) / sizeof(telnet_cmd_t);
     
    272273static int network_user_fibril(void *arg)
    273274{
    274         int rc;
    275275        telnet_user_t *user = arg;
    276276
    277         rc = loc_service_register(user->service_name, &user->service_id);
     277        int rc = loc_service_register(user->service_name, &user->service_id);
    278278        if (rc != EOK) {
    279279                telnet_user_error(user, "Unable to register %s with loc: %s.",
     
    284284        telnet_user_log(user, "Service %s registerd with id %" PRIun ".",
    285285            user->service_name, user->service_id);
    286 
     286       
    287287        fid_t spawn_fibril = fibril_create(spawn_task_fibril, user);
    288288        assert(spawn_fibril);
    289289        fibril_add_ready(spawn_fibril);
    290 
     290       
    291291        /* Wait for all clients to exit. */
    292292        fibril_mutex_lock(&user->guard);
     
    304304        }
    305305        fibril_mutex_unlock(&user->guard);
    306 
     306       
    307307        rc = loc_service_unregister(user->service_id);
    308308        if (rc != EOK) {
     
    324324        async_set_client_connection(client_connection);
    325325        int rc = loc_server_register(NAME);
    326         if (rc < 0) {
    327                 fprintf(stderr, NAME ": Unable to register server: %s.\n",
    328                     str_error(rc));
    329                 return 1;
    330         }
    331 
     326        if (rc != EOK) {
     327                fprintf(stderr, "%s: Unable to register server\n", NAME);
     328                return rc;
     329        }
     330       
    332331        struct sockaddr_in addr;
    333 
     332       
    334333        addr.sin_family = AF_INET;
    335334        addr.sin_port = htons(port);
    336 
     335       
    337336        rc = inet_pton(AF_INET, "127.0.0.1", (void *)
    338337            &addr.sin_addr.s_addr);
  • uspace/srv/hid/remcons/telnet.h

    ra33706e rb4ca0a9c  
    5757#define TELNET_LINEMODE 34
    5858
    59 
    6059#endif
    6160
  • uspace/srv/hid/remcons/user.h

    ra33706e rb4ca0a9c  
    7676} telnet_user_t;
    7777
    78 telnet_user_t *telnet_user_create(int socket);
    79 void telnet_user_destroy(telnet_user_t *user);
    80 telnet_user_t *telnet_user_get_for_client_connection(service_id_t id);
    81 bool telnet_user_is_zombie(telnet_user_t *user);
    82 void telnet_user_notify_client_disconnected(telnet_user_t *user);
    83 int telnet_user_get_next_keyboard_event(telnet_user_t *user, kbd_event_t *event);
    84 int telnet_user_send_data(telnet_user_t *user, uint8_t *data, size_t size);
    85 void telnet_user_update_cursor_x(telnet_user_t *user, int new_x);
     78extern telnet_user_t *telnet_user_create(int);
     79extern void telnet_user_destroy(telnet_user_t *);
     80extern telnet_user_t *telnet_user_get_for_client_connection(service_id_t);
     81extern bool telnet_user_is_zombie(telnet_user_t *);
     82extern void telnet_user_notify_client_disconnected(telnet_user_t *);
     83extern int telnet_user_get_next_keyboard_event(telnet_user_t *, kbd_event_t *);
     84extern int telnet_user_send_data(telnet_user_t *, uint8_t *, size_t);
     85extern void telnet_user_update_cursor_x(telnet_user_t *, int);
    8686
    8787/** Print informational message about connected user. */
    8888#ifdef CONFIG_DEBUG
    8989#define telnet_user_log(user, fmt, ...) \
    90         printf(NAME " [console %d (%d)]: " fmt "\n", user->id, (int) user->service_id, ##__VA_ARGS__)
     90        printf(NAME " [console %d (%d)]: " fmt "\n", \
     91            user->id, (int) user->service_id, ##__VA_ARGS__)
    9192#else
    92 #define telnet_user_log(user, fmt, ...) (void)0
     93#define telnet_user_log(user, fmt, ...) ((void) 0)
    9394#endif
    9495
    9596/** Print error message associated with connected user. */
    9697#define telnet_user_error(user, fmt, ...) \
    97         fprintf(stderr, NAME " [console %d (%d)]: ERROR: " fmt "\n", user->id, (int) user->service_id, ##__VA_ARGS__)
     98        fprintf(stderr, NAME " [console %d (%d)]: ERROR: " fmt "\n", \
     99            user->id, (int) user->service_id, ##__VA_ARGS__)
    98100
    99101#endif
  • uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.c

    ra33706e rb4ca0a9c  
    8484int main(int argc, char *argv[])
    8585{
    86         int rc;
    87 
    88         printf(NAME ": S3C24xx touchscreen driver\n");
     86        printf("%s: S3C24xx touchscreen driver\n", NAME);
    8987       
    9088        async_set_client_connection(s3c24xx_ts_connection);
    91         rc = loc_server_register(NAME);
    92         if (rc < 0) {
    93                 printf(NAME ": Unable to register driver.\n");
    94                 return -1;
     89        int rc = loc_server_register(NAME);
     90        if (rc != EOK) {
     91                printf("%s: Unable to register driver.\n", NAME);
     92                return rc;
    9593        }
    9694
  • uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart.c

    ra33706e rb4ca0a9c  
    7777int main(int argc, char *argv[])
    7878{
    79         int rc;
    80 
    81         printf(NAME ": S3C24xx on-chip UART driver\n");
    82 
     79        printf("%s: S3C24xx on-chip UART driver\n", NAME);
     80       
    8381        async_set_client_connection(s3c24xx_uart_connection);
    84         rc = loc_server_register(NAME);
    85         if (rc < 0) {
    86                 printf(NAME ": Unable to register server.\n");
    87                 return -1;
     82        int rc = loc_server_register(NAME);
     83        if (rc != EOK) {
     84                printf("%s: Unable to register server.\n", NAME);
     85                return rc;
    8886        }
    8987
  • uspace/srv/loader/main.c

    ra33706e rb4ca0a9c  
    450450        int rc = ns_intro(id);
    451451        if (rc != EOK)
    452                 return -1;
     452                return rc;
    453453       
    454454        /* Register at naming service. */
    455         if (service_register(SERVICE_LOAD) != EOK)
    456                 return -2;
     455        rc = service_register(SERVICE_LOAD);
     456        if (rc != EOK)
     457                return rc;
    457458       
    458459        async_manager();
  • uspace/srv/locsrv/locsrv.c

    ra33706e rb4ca0a9c  
    390390         */
    391391        list_initialize(&server->services);
    392 
    393392        link_initialize(&server->servers);
    394393       
     
    651650            min(size, act_size));
    652651        free(fqn);
     652       
     653        fibril_mutex_unlock(&services_list_mutex);
     654       
     655        async_answer_0(iid, retval);
     656}
     657
     658static void loc_service_get_server_name(ipc_callid_t iid, ipc_call_t *icall)
     659{
     660        ipc_callid_t callid;
     661        size_t size;
     662        size_t act_size;
     663        loc_service_t *svc;
     664       
     665        if (!async_data_read_receive(&callid, &size)) {
     666                async_answer_0(callid, EREFUSED);
     667                async_answer_0(iid, EREFUSED);
     668                return;
     669        }
     670       
     671        fibril_mutex_lock(&services_list_mutex);
     672       
     673        svc = loc_service_find_id(IPC_GET_ARG1(*icall));
     674        if (svc == NULL) {
     675                fibril_mutex_unlock(&services_list_mutex);
     676                async_answer_0(callid, ENOENT);
     677                async_answer_0(iid, ENOENT);
     678                return;
     679        }
     680       
     681        if (svc->server == NULL) {
     682                fibril_mutex_unlock(&services_list_mutex);
     683                async_answer_0(callid, EINVAL);
     684                async_answer_0(iid, EINVAL);
     685                return;
     686        }
     687       
     688        act_size = str_size(svc->server->name);
     689        if (act_size > size) {
     690                fibril_mutex_unlock(&services_list_mutex);
     691                async_answer_0(callid, EOVERFLOW);
     692                async_answer_0(iid, EOVERFLOW);
     693                return;
     694        }
     695       
     696        sysarg_t retval = async_data_read_finalize(callid, svc->server->name,
     697            min(size, act_size));
    653698       
    654699        fibril_mutex_unlock(&services_list_mutex);
     
    14051450                case LOC_SERVICE_GET_NAME:
    14061451                        loc_service_get_name(callid, &call);
     1452                        break;
     1453                case LOC_SERVICE_GET_SERVER_NAME:
     1454                        loc_service_get_server_name(callid, &call);
    14071455                        break;
    14081456                case LOC_NAMESPACE_GET_ID:
     
    14901538       
    14911539        /* Register location service at naming service */
    1492         if (service_register(SERVICE_LOC) != EOK)
    1493                 return -1;
     1540        int rc = service_register(SERVICE_LOC);
     1541        if (rc != EOK)
     1542                return rc;
    14941543       
    14951544        printf("%s: Accepting connections\n", NAME);
  • uspace/srv/locsrv/locsrv.h

    ra33706e rb4ca0a9c  
    8686        /** Link to global list of services (services_list) */
    8787        link_t services;
     88       
    8889        /** Link to server list of services (loc_server_t.services) */
    8990        link_t server_services;
     91       
    9092        /** Link to list of services in category (category_t.services) */
    9193        link_t cat_services;
     94       
    9295        /** List of category memberships (svc_categ_t) */
    9396        list_t cat_memb;
     97       
    9498        /** Unique service identifier */
    9599        service_id_t id;
     100       
    96101        /** Service namespace */
    97102        loc_namespace_t *namespace;
     103       
    98104        /** Service name */
    99105        char *name;
     106       
    100107        /** Supplier of this service */
    101108        loc_server_t *server;
     109       
    102110        /** Use this interface when forwarding to server. */
    103111        sysarg_t forward_interface;
  • uspace/srv/net/ethip/ethip.c

    ra33706e rb4ca0a9c  
    7373static int ethip_init(void)
    7474{
    75         int rc;
    76 
    7775        async_set_client_connection(ethip_client_conn);
    78 
    79         rc = loc_server_register(NAME);
     76       
     77        int rc = loc_server_register(NAME);
    8078        if (rc != EOK) {
    8179                log_msg(LVL_ERROR, "Failed registering server.");
    8280                return rc;
    8381        }
    84 
     82       
    8583        rc = ethip_nic_discovery_start();
    8684        if (rc != EOK)
    8785                return rc;
    88 
     86       
    8987        return EOK;
    9088}
  • uspace/srv/net/ethip/ethip_nic.c

    ra33706e rb4ca0a9c  
    150150static int ethip_nic_open(service_id_t sid)
    151151{
    152         ethip_nic_t *nic;
    153         int rc;
    154152        bool in_list = false;
    155153        nic_address_t nic_address;
    156 
     154       
    157155        log_msg(LVL_DEBUG, "ethip_nic_open()");
    158         nic = ethip_nic_new();
     156        ethip_nic_t *nic = ethip_nic_new();
    159157        if (nic == NULL)
    160158                return ENOMEM;
    161 
    162         rc = loc_service_get_name(sid, &nic->svc_name);
     159       
     160        int rc = loc_service_get_name(sid, &nic->svc_name);
    163161        if (rc != EOK) {
    164162                log_msg(LVL_ERROR, "Failed getting service name.");
    165163                goto error;
    166164        }
    167 
     165       
    168166        nic->sess = loc_service_connect(EXCHANGE_SERIALIZE, sid, 0);
    169167        if (nic->sess == NULL) {
     
    171169                goto error;
    172170        }
    173 
     171       
    174172        nic->svc_id = sid;
    175 
     173       
    176174        rc = nic_callback_create(nic->sess, ethip_nic_cb_conn, nic);
    177175        if (rc != EOK) {
     
    298296int ethip_nic_discovery_start(void)
    299297{
    300         int rc;
    301 
    302         rc = loc_register_cat_change_cb(ethip_nic_cat_change_cb);
     298        int rc = loc_register_cat_change_cb(ethip_nic_cat_change_cb);
    303299        if (rc != EOK) {
    304300                log_msg(LVL_ERROR, "Failed registering callback for NIC "
     
    306302                return rc;
    307303        }
    308 
     304       
    309305        return ethip_nic_check_new();
    310306}
  • uspace/srv/net/inetsrv/inetsrv.c

    ra33706e rb4ca0a9c  
    6666static int inet_init(void)
    6767{
    68         service_id_t sid;
    69         int rc;
    70 
    7168        log_msg(LVL_DEBUG, "inet_init()");
    72 
     69       
    7370        async_set_client_connection(inet_client_conn);
    74 
    75         rc = loc_server_register(NAME);
     71       
     72        int rc = loc_server_register(NAME);
    7673        if (rc != EOK) {
    7774                log_msg(LVL_ERROR, "Failed registering server (%d).", rc);
    7875                return EEXIST;
    7976        }
    80 
     77       
     78        service_id_t sid;
    8179        rc = loc_service_register_with_iface(SERVICE_NAME_INET, &sid,
    8280            INET_PORT_DEFAULT);
     
    8583                return EEXIST;
    8684        }
    87 
     85       
    8886        rc = loc_service_register_with_iface(SERVICE_NAME_INETCFG, &sid,
    8987            INET_PORT_CFG);
     
    9290                return EEXIST;
    9391        }
    94 
     92       
    9593        rc = loc_service_register_with_iface(SERVICE_NAME_INETPING, &sid,
    9694            INET_PORT_PING);
     
    9997                return EEXIST;
    10098        }
    101 
     99       
    102100        rc = inet_link_discovery_start();
    103101        if (rc != EOK)
    104102                return EEXIST;
    105 
     103       
    106104        return EOK;
    107105}
  • uspace/srv/net/loopip/loopip.c

    ra33706e rb4ca0a9c  
    9191        category_id_t iplink_cat;
    9292        const char *svc_name = "net/loopback";
    93 
     93       
    9494        async_set_client_connection(loopip_client_conn);
    95 
     95       
    9696        rc = loc_server_register(NAME);
    9797        if (rc != EOK) {
  • uspace/srv/net/tcp/sock.c

    ra33706e rb4ca0a9c  
    6868int tcp_sock_init(void)
    6969{
    70         int rc;
    71 
    7270        socket_ports_initialize(&gsock);
    73 
     71       
    7472        async_set_client_connection(tcp_sock_connection);
    75 
    76         rc = service_register(SERVICE_TCP);
     73       
     74        int rc = service_register(SERVICE_TCP);
    7775        if (rc != EOK)
    7876                return EEXIST;
    79 
     77       
    8078        return EOK;
    8179}
     
    153151            sock, sock_id);
    154152
    155         if (rc != EOK)
     153        if (rc != EOK) {
     154                fibril_destroy(sock->recv_fibril);
     155                sock->recv_fibril = 0;
    156156                return rc;
     157        }
    157158
    158159        sock_core = socket_cores_find(&sock->client->sockets, *sock_id);
  • uspace/srv/net/udp/sock.c

    ra33706e rb4ca0a9c  
    5151#include "ucall.h"
    5252
    53 #define FRAGMENT_SIZE 1024
    54 
    5553/** Free ports pool start. */
    5654#define UDP_FREE_PORTS_START            1025
     
    6361
    6462static void udp_sock_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg);
     63static int udp_sock_recv_fibril(void *arg);
    6564
    6665int udp_sock_init(void)
    6766{
    68         int rc;
    69 
    7067        socket_ports_initialize(&gsock);
    71 
     68       
    7269        async_set_client_connection(udp_sock_connection);
    73 
    74         rc = service_register(SERVICE_UDP);
     70       
     71        int rc = service_register(SERVICE_UDP);
    7572        if (rc != EOK)
    7673                return EEXIST;
    77 
     74       
    7875        return EOK;
    7976}
     
    8481
    8582        socket = (udp_sockdata_t *)sock_core->specific_data;
    86         assert(socket->assoc != NULL);
    87         udp_uc_destroy(socket->assoc);
     83        (void)socket;
     84
     85        /* XXX We need to force the receive fibril to quit */
    8886}
    8987
     
    9391        async_exch_t *exch = async_exchange_begin(sock_core->sess);
    9492        async_msg_5(exch, NET_SOCKET_RECEIVED, (sysarg_t)sock_core->socket_id,
    95             FRAGMENT_SIZE, 0, 0, 1);
     93            UDP_FRAGMENT_SIZE, 0, 0, 1);
    9694        async_exchange_end(exch);
    9795}
     
    115113        sock->client = client;
    116114
     115        sock->recv_buffer_used = 0;
     116        sock->recv_error = UDP_EOK;
     117        fibril_mutex_initialize(&sock->recv_buffer_lock);
     118        fibril_condvar_initialize(&sock->recv_buffer_cv);
     119
    117120        rc = udp_uc_create(&sock->assoc);
    118121        if (rc != EOK) {
     122                free(sock);
     123                async_answer_0(callid, rc);
     124                return;
     125        }
     126
     127        sock->recv_fibril = fibril_create(udp_sock_recv_fibril, sock);
     128        if (sock->recv_fibril == 0) {
     129                udp_uc_destroy(sock->assoc);
     130                free(sock);
     131                async_answer_0(callid, ENOMEM);
     132                return;
     133        }
     134
     135        sock_id = SOCKET_GET_SOCKET_ID(call);
     136        rc = socket_create(&client->sockets, client->sess, sock, &sock_id);
     137        if (rc != EOK) {
     138                fibril_destroy(sock->recv_fibril);
    119139                udp_uc_destroy(sock->assoc);
    120140                free(sock);
     
    123143        }
    124144
    125         sock_id = SOCKET_GET_SOCKET_ID(call);
    126         rc = socket_create(&client->sockets, client->sess, sock, &sock_id);
    127         if (rc != EOK) {
    128                 async_answer_0(callid, rc);
    129                 return;
    130         }
     145        fibril_add_ready(sock->recv_fibril);
    131146
    132147        sock_core = socket_cores_find(&client->sockets, sock_id);
     
    136151        SOCKET_SET_SOCKET_ID(answer, sock_id);
    137152
    138         SOCKET_SET_DATA_FRAGMENT_SIZE(answer, FRAGMENT_SIZE);
     153        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, UDP_FRAGMENT_SIZE);
    139154        SOCKET_SET_HEADER_SIZE(answer, sizeof(udp_header_t));
    140155        async_answer_3(callid, EOK, IPC_GET_ARG1(answer),
     
    207222        }
    208223
    209         udp_sock_notify_data(sock_core);
    210 
    211224        log_msg(LVL_DEBUG, " - success");
    212225        async_answer_0(callid, rc);
     
    247260        ipc_callid_t wcallid;
    248261        size_t length;
    249         uint8_t buffer[FRAGMENT_SIZE];
     262        uint8_t buffer[UDP_FRAGMENT_SIZE];
    250263        udp_error_t urc;
    251264        int rc;
     
    294307                        goto out;
    295308                }
    296 
    297                 udp_sock_notify_data(sock_core);
    298309        }
    299310
     
    332343                }
    333344
    334                 if (length > FRAGMENT_SIZE)
    335                         length = FRAGMENT_SIZE;
     345                if (length > UDP_FRAGMENT_SIZE)
     346                        length = UDP_FRAGMENT_SIZE;
    336347
    337348                rc = async_data_write_finalize(wcallid, buffer, length);
     
    369380       
    370381        IPC_SET_ARG1(answer, 0);
    371         SOCKET_SET_DATA_FRAGMENT_SIZE(answer, FRAGMENT_SIZE);
     382        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, UDP_FRAGMENT_SIZE);
    372383        async_answer_2(callid, EOK, IPC_GET_ARG1(answer),
    373384            IPC_GET_ARG2(answer));
     
    388399        ipc_call_t answer;
    389400        ipc_callid_t rcallid;
    390         uint8_t buffer[FRAGMENT_SIZE];
    391401        size_t data_len;
    392         xflags_t xflags;
    393402        udp_error_t urc;
     403        udp_sock_t rsock;
    394404        struct sockaddr_in addr;
    395         udp_sock_t rsock;
    396405        int rc;
    397406
     
    418427        (void)flags;
    419428
    420         urc = udp_uc_receive(socket->assoc, buffer, FRAGMENT_SIZE, &data_len,
    421             &xflags, &rsock);
    422         log_msg(LVL_DEBUG, "**** udp_uc_receive done, data_len=%zu", data_len);
     429        log_msg(LVL_DEBUG, "udp_sock_recvfrom(): lock recv_buffer lock");
     430        fibril_mutex_lock(&socket->recv_buffer_lock);
     431        while (socket->recv_buffer_used == 0 && socket->recv_error == UDP_EOK) {
     432                log_msg(LVL_DEBUG, "udp_sock_recvfrom(): wait for cv");
     433                fibril_condvar_wait(&socket->recv_buffer_cv,
     434                    &socket->recv_buffer_lock);
     435        }
     436
     437        log_msg(LVL_DEBUG, "Got data in sock recv_buffer");
     438
     439        rsock = socket->recv_fsock;
     440        data_len = socket->recv_buffer_used;
     441        urc = socket->recv_error;
     442
     443        log_msg(LVL_DEBUG, "**** recv data_len=%zu", data_len);
    423444
    424445        switch (urc) {
     
    439460        log_msg(LVL_DEBUG, "**** udp_uc_receive -> %d", rc);
    440461        if (rc != EOK) {
     462                fibril_mutex_unlock(&socket->recv_buffer_lock);
    441463                fibril_mutex_unlock(&socket->lock);
    442464                async_answer_0(callid, rc);
     
    452474                log_msg(LVL_DEBUG, "addr read receive");
    453475                if (!async_data_read_receive(&rcallid, &addr_length)) {
     476                        fibril_mutex_unlock(&socket->recv_buffer_lock);
    454477                        fibril_mutex_unlock(&socket->lock);
    455478                        async_answer_0(callid, EINVAL);
     
    463486                rc = async_data_read_finalize(rcallid, &addr, addr_length);
    464487                if (rc != EOK) {
     488                        fibril_mutex_unlock(&socket->recv_buffer_lock);
    465489                        fibril_mutex_unlock(&socket->lock);
    466490                        async_answer_0(callid, EINVAL);
     
    471495        log_msg(LVL_DEBUG, "data read receive");
    472496        if (!async_data_read_receive(&rcallid, &length)) {
     497                fibril_mutex_unlock(&socket->recv_buffer_lock);
    473498                fibril_mutex_unlock(&socket->lock);
    474499                async_answer_0(callid, EINVAL);
     
    480505
    481506        log_msg(LVL_DEBUG, "data read finalize");
    482         rc = async_data_read_finalize(rcallid, buffer, length);
     507        rc = async_data_read_finalize(rcallid, socket->recv_buffer, length);
    483508
    484509        if (length < data_len && rc == EOK)
     
    491516        async_answer_3(callid, EOK, IPC_GET_ARG1(answer),
    492517            IPC_GET_ARG2(answer), IPC_GET_ARG3(answer));
    493        
    494         /* Push one fragment notification to client's queue */
    495         udp_sock_notify_data(sock_core);
     518
     519        socket->recv_buffer_used = 0;
     520
     521        fibril_condvar_broadcast(&socket->recv_buffer_cv);
     522        fibril_mutex_unlock(&socket->recv_buffer_lock);
    496523        fibril_mutex_unlock(&socket->lock);
    497524}
     
    540567}
    541568
     569static int udp_sock_recv_fibril(void *arg)
     570{
     571        udp_sockdata_t *sock = (udp_sockdata_t *)arg;
     572        udp_error_t urc;
     573        xflags_t xflags;
     574        size_t rcvd;
     575
     576        log_msg(LVL_DEBUG, "udp_sock_recv_fibril()");
     577
     578        while (true) {
     579                log_msg(LVL_DEBUG, "[] wait for rcv buffer empty()");
     580                fibril_mutex_lock(&sock->recv_buffer_lock);
     581                while (sock->recv_buffer_used != 0) {
     582                        fibril_condvar_wait(&sock->recv_buffer_cv,
     583                            &sock->recv_buffer_lock);
     584                }
     585
     586                log_msg(LVL_DEBUG, "[] call udp_uc_receive()");
     587                urc = udp_uc_receive(sock->assoc, sock->recv_buffer,
     588                    UDP_FRAGMENT_SIZE, &rcvd, &xflags, &sock->recv_fsock);
     589                sock->recv_error = urc;
     590
     591                udp_sock_notify_data(sock->sock_core);
     592
     593                if (urc != UDP_EOK) {
     594                        fibril_condvar_broadcast(&sock->recv_buffer_cv);
     595                        fibril_mutex_unlock(&sock->recv_buffer_lock);
     596                        break;
     597                }
     598
     599                log_msg(LVL_DEBUG, "[] got data - broadcast recv_buffer_cv");
     600
     601                sock->recv_buffer_used = rcvd;
     602                fibril_mutex_unlock(&sock->recv_buffer_lock);
     603                fibril_condvar_broadcast(&sock->recv_buffer_cv);
     604        }
     605
     606        udp_uc_destroy(sock->assoc);
     607
     608        return 0;
     609}
     610
    542611static void udp_sock_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    543612{
  • uspace/srv/net/udp/udp.c

    ra33706e rb4ca0a9c  
    7373        printf(NAME ": UDP (User Datagram Protocol) service\n");
    7474
    75         rc = log_init(NAME, LVL_WARN);
     75        rc = log_init(NAME, LVL_DEBUG);
    7676        if (rc != EOK) {
    7777                printf(NAME ": Failed to initialize log.\n");
  • uspace/srv/net/udp/udp_type.h

    ra33706e rb4ca0a9c  
    3636#define UDP_TYPE_H
    3737
     38#include <fibril.h>
    3839#include <fibril_synch.h>
    3940#include <socket_core.h>
    4041#include <sys/types.h>
     42
     43#define UDP_FRAGMENT_SIZE 4096
     44
    4145
    4246typedef enum {
     
    141145        /** Connection */
    142146        udp_assoc_t *assoc;
     147        /** Receiving fibril */
     148        fid_t recv_fibril;
     149        uint8_t recv_buffer[UDP_FRAGMENT_SIZE];
     150        size_t recv_buffer_used;
     151        udp_sock_t recv_fsock;
     152        fibril_mutex_t recv_buffer_lock;
     153        fibril_condvar_t recv_buffer_cv;
     154        udp_error_t recv_error;
    143155} udp_sockdata_t;
    144156
  • uspace/srv/ns/ns.c

    ra33706e rb4ca0a9c  
    4848int main(int argc, char **argv)
    4949{
    50         printf(NAME ": HelenOS IPC Naming Service\n");
     50        printf("%s: HelenOS IPC Naming Service\n", NAME);
    5151       
    5252        int rc = service_init();
  • uspace/srv/vfs/vfs.c

    ra33706e rb4ca0a9c  
    159159int main(int argc, char **argv)
    160160{
    161         printf(NAME ": HelenOS VFS server\n");
     161        printf("%s: HelenOS VFS server\n", NAME);
    162162       
    163163        /*
     
    165165         */
    166166        if (!vfs_nodes_init()) {
    167                 printf(NAME ": Failed to initialize VFS node hash table\n");
     167                printf("%s: Failed to initialize VFS node hash table\n",
     168                    NAME);
    168169                return ENOMEM;
    169170        }
     
    172173         * Allocate and initialize the Path Lookup Buffer.
    173174         */
    174         plb = as_area_create((void *) -1, PLB_SIZE,
     175        plb = as_area_create(AS_AREA_ANY, PLB_SIZE,
    175176            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
    176         if (plb == (void *) -1) {
    177                 printf(NAME ": Cannot create address space area\n");
     177        if (plb == AS_MAP_FAILED) {
     178                printf("%s: Cannot create address space area\n", NAME);
    178179                return ENOMEM;
    179180        }
     
    196197        async_set_interrupt_received(notification_received);
    197198        event_task_subscribe(EVENT_TASK_STATE_CHANGE, VFS_TASK_STATE_CHANGE);
    198 
     199       
    199200        /*
    200201         * Register at the naming service.
    201202         */
    202         if (service_register(SERVICE_VFS) != EOK) {
     203        int rc = service_register(SERVICE_VFS);
     204        if (rc != EOK) {
    203205                printf("%s: Cannot register VFS service\n", NAME);
    204                 return EINVAL;
     206                return rc;
    205207        }
    206208       
     
    208210         * Start accepting connections.
    209211         */
    210         printf(NAME ": Accepting connections\n");
     212        printf("%s: Accepting connections\n", NAME);
    211213        async_manager();
    212214        return 0;
Note: See TracChangeset for help on using the changeset viewer.