Changes in uspace/srv/hid/input/ctl/kbdev.c [3123d2a:cce8a83] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/ctl/kbdev.c
r3123d2a rcce8a83 68 68 /** Link to generic keyboard device */ 69 69 kbd_dev_t *kbd_dev; 70 70 71 71 /** Session with kbdev device */ 72 72 async_sess_t *sess; … … 75 75 static kbdev_t *kbdev_new(kbd_dev_t *kdev) 76 76 { 77 kbdev_t *kbdev = calloc(1, sizeof(kbdev_t)); 77 kbdev_t *kbdev; 78 79 kbdev = calloc(1, sizeof(kbdev_t)); 78 80 if (kbdev == NULL) 79 81 return NULL; 80 82 81 83 kbdev->kbd_dev = kdev; 82 84 … … 88 90 if (kbdev->sess != NULL) 89 91 async_hangup(kbdev->sess); 90 91 92 free(kbdev); 92 93 } … … 94 95 static int kbdev_ctl_init(kbd_dev_t *kdev) 95 96 { 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); 98 103 if (sess == NULL) { 99 104 printf("%s: Failed starting session with '%s.'\n", NAME, 100 105 kdev->svc_name); 101 return ENOENT;106 return -1; 102 107 } 103 104 kbdev _t *kbdev= kbdev_new(kdev);108 109 kbdev = kbdev_new(kdev); 105 110 if (kbdev == NULL) { 106 111 printf("%s: Failed allocating device structure for '%s'.\n", 107 112 NAME, kdev->svc_name); 108 async_hangup(sess); 109 return ENOMEM; 113 return -1; 110 114 } 111 115 112 116 kbdev->sess = sess; 113 114 async_exch_t *exch = async_exchange_begin(sess);117 118 exch = async_exchange_begin(sess); 115 119 if (exch == NULL) { 116 120 printf("%s: Failed starting exchange with '%s'.\n", NAME, 117 121 kdev->svc_name); 118 122 kbdev_destroy(kbdev); 119 return ENOENT;123 return -1; 120 124 } 121 122 intrc = 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); 123 127 if (rc != EOK) { 124 128 printf("%s: Failed creating callback connection from '%s'.\n", … … 126 130 async_exchange_end(exch); 127 131 kbdev_destroy(kbdev); 128 return rc;132 return -1; 129 133 } 130 134 131 135 async_exchange_end(exch); 132 136 133 137 kdev->ctl_private = (void *) kbdev; 134 138 return 0; … … 137 141 static void kbdev_ctl_set_ind(kbd_dev_t *kdev, unsigned mods) 138 142 { 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); 141 149 if (!exch) 142 150 return; 143 151 144 152 async_msg_1(exch, KBDEV_SET_IND, mods); 145 153 async_exchange_end(exch); … … 161 169 callid = async_get_call(&call); 162 170 if (!IPC_GET_IMETHOD(call)) { 163 kbdev_destroy(kbdev);171 /* XXX Handle hangup */ 164 172 return; 165 173 }
Note:
See TracChangeset
for help on using the changeset viewer.