Changeset cc574511 in mainline for uspace/srv/hid/input/ctl/kbdev.c
- Timestamp:
- 2011-08-16T12:37:58Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 16dc887
- Parents:
- 86ffa27f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/ctl/kbdev.c
r86ffa27f rcc574511 48 48 #include <kbd_ctl.h> 49 49 #include <kbd_port.h> 50 #include <loc.h> 50 51 #include <stdlib.h> 52 #include <sys/typefmt.h> 51 53 #include <vfs/vfs_sess.h> 52 54 … … 70 72 /** Session with kbdev device */ 71 73 async_sess_t *sess; 72 73 /** File descriptor of open kbdev device */74 int fd;75 74 } kbdev_t; 76 75 … … 84 83 85 84 kbdev->kbd_dev = kdev; 86 kbdev->fd = -1;87 85 88 86 return kbdev; … … 93 91 if (kbdev->sess != NULL) 94 92 async_hangup(kbdev->sess); 95 if (kbdev->fd >= 0)96 close(kbdev->fd);97 93 free(kbdev); 98 94 } … … 100 96 static int kbdev_ctl_init(kbd_dev_t *kdev) 101 97 { 102 const char *pathname;103 98 async_sess_t *sess; 104 99 async_exch_t *exch; 105 100 kbdev_t *kbdev; 106 int fd;101 char *svc_name; 107 102 int rc; 108 103 109 pathname = kdev->dev_path; 104 if (asprintf(&svc_name, "devname%" PRIun, kdev->service_id) > 0) 105 svc_name = (char *) "unknown"; 110 106 111 fd = open(pathname, O_RDWR); 112 if (fd < 0) { 113 return -1; 114 } 115 116 sess = fd_session(EXCHANGE_SERIALIZE, fd); 107 sess = loc_service_connect(EXCHANGE_SERIALIZE, kdev->service_id, 0); 117 108 if (sess == NULL) { 118 printf("%s: Failed starting session with '%s '\n", NAME, pathname);119 close(fd);109 printf("%s: Failed starting session with '%s.'\n", NAME, 110 svc_name); 120 111 return -1; 121 112 } … … 124 115 if (kbdev == NULL) { 125 116 printf("%s: Failed allocating device structure for '%s'.\n", 126 NAME, pathname);117 NAME, svc_name); 127 118 return -1; 128 119 } 129 120 130 kbdev->fd = fd;131 121 kbdev->sess = sess; 132 122 133 123 exch = async_exchange_begin(sess); 134 124 if (exch == NULL) { 135 printf("%s: Failed starting exchange with '%s'.\n", NAME, pathname); 125 printf("%s: Failed starting exchange with '%s'.\n", NAME, 126 svc_name); 136 127 kbdev_destroy(kbdev); 137 128 return -1; … … 141 132 if (rc != EOK) { 142 133 printf("%s: Failed creating callback connection from '%s'.\n", 143 NAME, pathname);134 NAME, svc_name); 144 135 async_exchange_end(exch); 145 136 kbdev_destroy(kbdev);
Note:
See TracChangeset
for help on using the changeset viewer.