Changeset a46e56b in mainline for uspace/lib/c/generic/io/chardev_srv.c
- Timestamp:
- 2018-03-22T06:49:35Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 77f0a1d
- Parents:
- 3e242d2
- git-author:
- Jakub Jermar <jakub@…> (2018-03-21 23:29:06)
- git-committer:
- Jakub Jermar <jakub@…> (2018-03-22 06:49:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/io/chardev_srv.c
r3e242d2 ra46e56b 43 43 static chardev_srv_t *chardev_srv_create(chardev_srvs_t *); 44 44 45 static void chardev_read_srv(chardev_srv_t *srv, cap_call_handle_t c allid,45 static void chardev_read_srv(chardev_srv_t *srv, cap_call_handle_t chandle, 46 46 ipc_call_t *call) 47 47 { … … 50 50 size_t nread; 51 51 errno_t rc; 52 cap_call_handle_t rcall id;52 cap_call_handle_t rcall_handle; 53 53 54 if (!async_data_read_receive(&rcall id, &size)) {55 async_answer_0(c allid, EINVAL);54 if (!async_data_read_receive(&rcall_handle, &size)) { 55 async_answer_0(chandle, EINVAL); 56 56 return; 57 57 } … … 59 59 buf = malloc(size); 60 60 if (buf == NULL) { 61 async_answer_0(rcall id, ENOMEM);62 async_answer_0(c allid, ENOMEM);61 async_answer_0(rcall_handle, ENOMEM); 62 async_answer_0(chandle, ENOMEM); 63 63 return; 64 64 } 65 65 66 66 if (srv->srvs->ops->read == NULL) { 67 async_answer_0(rcall id, ENOTSUP);68 async_answer_0(c allid, ENOTSUP);67 async_answer_0(rcall_handle, ENOTSUP); 68 async_answer_0(chandle, ENOTSUP); 69 69 free(buf); 70 70 return; … … 73 73 rc = srv->srvs->ops->read(srv, buf, size, &nread); 74 74 if (rc != EOK && nread == 0) { 75 async_answer_0(rcall id, rc);76 async_answer_0(c allid, rc);75 async_answer_0(rcall_handle, rc); 76 async_answer_0(chandle, rc); 77 77 free(buf); 78 78 return; 79 79 } 80 80 81 async_data_read_finalize(rcall id, buf, nread);81 async_data_read_finalize(rcall_handle, buf, nread); 82 82 83 83 free(buf); 84 async_answer_2(c allid, EOK, (sysarg_t) rc, nread);84 async_answer_2(chandle, EOK, (sysarg_t) rc, nread); 85 85 } 86 86 87 static void chardev_write_srv(chardev_srv_t *srv, cap_call_handle_t c allid,87 static void chardev_write_srv(chardev_srv_t *srv, cap_call_handle_t chandle, 88 88 ipc_call_t *call) 89 89 { … … 95 95 rc = async_data_write_accept(&data, false, 0, 0, 0, &size); 96 96 if (rc != EOK) { 97 async_answer_0(c allid, rc);97 async_answer_0(chandle, rc); 98 98 return; 99 99 } 100 100 101 101 if (srv->srvs->ops->write == NULL) { 102 async_answer_0(c allid, ENOTSUP);102 async_answer_0(chandle, ENOTSUP); 103 103 return; 104 104 } … … 107 107 free(data); 108 108 if (rc != EOK && nwr == 0) { 109 async_answer_0(c allid, rc);109 async_answer_0(chandle, rc); 110 110 return; 111 111 } 112 112 113 async_answer_2(c allid, EOK, (sysarg_t) rc, nwr);113 async_answer_2(chandle, EOK, (sysarg_t) rc, nwr); 114 114 } 115 115 … … 132 132 } 133 133 134 errno_t chardev_conn(cap_call_handle_t i id, ipc_call_t *icall, chardev_srvs_t *srvs)134 errno_t chardev_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, chardev_srvs_t *srvs) 135 135 { 136 136 chardev_srv_t *srv; … … 138 138 139 139 /* Accept the connection */ 140 async_answer_0(i id, EOK);140 async_answer_0(icall_handle, EOK); 141 141 142 142 srv = chardev_srv_create(srvs); … … 152 152 while (true) { 153 153 ipc_call_t call; 154 cap_call_handle_t c allid= async_get_call(&call);154 cap_call_handle_t chandle = async_get_call(&call); 155 155 sysarg_t method = IPC_GET_IMETHOD(call); 156 156 157 157 if (!method) { 158 158 /* The other side has hung up */ 159 async_answer_0(c allid, EOK);159 async_answer_0(chandle, EOK); 160 160 break; 161 161 } … … 163 163 switch (method) { 164 164 case CHARDEV_READ: 165 chardev_read_srv(srv, c allid, &call);165 chardev_read_srv(srv, chandle, &call); 166 166 break; 167 167 case CHARDEV_WRITE: 168 chardev_write_srv(srv, c allid, &call);168 chardev_write_srv(srv, chandle, &call); 169 169 break; 170 170 default: 171 171 if (srv->srvs->ops->def_handler != NULL) 172 srv->srvs->ops->def_handler(srv, c allid, &call);172 srv->srvs->ops->def_handler(srv, chandle, &call); 173 173 else 174 async_answer_0(c allid, ENOTSUP);174 async_answer_0(chandle, ENOTSUP); 175 175 } 176 176 }
Note:
See TracChangeset
for help on using the changeset viewer.