Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/input/ctl/kbdev.c

    r3123d2a rcce8a83  
    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 = calloc(1, sizeof(kbdev_t));
     77        kbdev_t *kbdev;
     78
     79        kbdev = calloc(1, sizeof(kbdev_t));
    7880        if (kbdev == NULL)
    7981                return NULL;
    80        
     82
    8183        kbdev->kbd_dev = kdev;
    8284
     
    8890        if (kbdev->sess != NULL)
    8991                async_hangup(kbdev->sess);
    90        
    9192        free(kbdev);
    9293}
     
    9495static int kbdev_ctl_init(kbd_dev_t *kdev)
    9596{
    96         async_sess_t *sess = loc_service_connect(EXCHANGE_SERIALIZE,
    97             kdev->svc_id, 0);
     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);
    98103        if (sess == NULL) {
    99104                printf("%s: Failed starting session with '%s.'\n", NAME,
    100105                    kdev->svc_name);
    101                 return ENOENT;
     106                return -1;
    102107        }
    103        
    104         kbdev_t *kbdev = kbdev_new(kdev);
     108
     109        kbdev = kbdev_new(kdev);
    105110        if (kbdev == NULL) {
    106111                printf("%s: Failed allocating device structure for '%s'.\n",
    107112                    NAME, kdev->svc_name);
    108                 async_hangup(sess);
    109                 return ENOMEM;
     113                return -1;
    110114        }
    111        
     115
    112116        kbdev->sess = sess;
    113        
    114         async_exch_t *exch = async_exchange_begin(sess);
     117
     118        exch = async_exchange_begin(sess);
    115119        if (exch == NULL) {
    116120                printf("%s: Failed starting exchange with '%s'.\n", NAME,
    117121                    kdev->svc_name);
    118122                kbdev_destroy(kbdev);
    119                 return ENOENT;
     123                return -1;
    120124        }
    121        
    122         int rc = async_connect_to_me(exch, 0, 0, 0, kbdev_callback_conn, kbdev);
     125
     126        rc = async_connect_to_me(exch, 0, 0, 0, kbdev_callback_conn, kbdev);
    123127        if (rc != EOK) {
    124128                printf("%s: Failed creating callback connection from '%s'.\n",
     
    126130                async_exchange_end(exch);
    127131                kbdev_destroy(kbdev);
    128                 return rc;
     132                return -1;
    129133        }
    130        
     134
    131135        async_exchange_end(exch);
    132        
     136
    133137        kdev->ctl_private = (void *) kbdev;
    134138        return 0;
     
    137141static void kbdev_ctl_set_ind(kbd_dev_t *kdev, unsigned mods)
    138142{
    139         async_sess_t *sess = ((kbdev_t *) kdev->ctl_private)->sess;
    140         async_exch_t *exch = async_exchange_begin(sess);
     143        async_sess_t *sess;
     144        async_exch_t *exch;
     145
     146        sess = ((kbdev_t *) kdev->ctl_private)->sess;
     147
     148        exch = async_exchange_begin(sess);
    141149        if (!exch)
    142150                return;
    143        
     151
    144152        async_msg_1(exch, KBDEV_SET_IND, mods);
    145153        async_exchange_end(exch);
     
    161169                callid = async_get_call(&call);
    162170                if (!IPC_GET_IMETHOD(call)) {
    163                         kbdev_destroy(kbdev);
     171                        /* XXX Handle hangup */
    164172                        return;
    165173                }
Note: See TracChangeset for help on using the changeset viewer.