Changeset 0b63dc2 in mainline for uspace/lib/ddev
- Timestamp:
- 2019-12-07T20:26:28Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- df1a019
- Parents:
- 71cbe5c
- Location:
- uspace/lib/ddev
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ddev/include/ddev_srv.h
r71cbe5c r0b63dc2 50 50 51 51 struct ddev_ops { 52 errno_t (*get_gc)(void *, gfx_context_t **);52 errno_t (*get_gc)(void *, sysarg_t *, sysarg_t *); 53 53 }; 54 54 -
uspace/lib/ddev/src/ddev.c
r71cbe5c r0b63dc2 88 88 async_sess_t *sess; 89 89 async_exch_t *exch; 90 sysarg_t arg2; 91 sysarg_t arg3; 90 92 ipc_gc_t *gc; 91 93 errno_t rc; 92 94 93 95 exch = async_exchange_begin(ddev->sess); 94 sess = async_connect_me_to(exch, INTERFACE_GC, 0, 42); 95 if (sess == NULL) { 96 async_exchange_end(exch); 96 rc = async_req_0_2(exch, DDEV_GET_GC, &arg2, &arg3); 97 sess = async_connect_me_to(exch, INTERFACE_GC, arg2, arg3); 98 async_exchange_end(exch); 99 100 if (sess == NULL) 97 101 return EIO; 98 }99 100 async_exchange_end(exch);101 102 102 103 rc = ipc_gc_create(sess, &gc); -
uspace/lib/ddev/src/ddev_srv.c
r71cbe5c r0b63dc2 45 45 #include <stdio.h> 46 46 47 /** Connect to a GC. 48 * 49 * XXX As a workaround here we tell the client the values of arg2 and arg3 50 * needed to connect to the GC using async_connect_me_to(), these need 51 * to be provided by the ddev_ops_t.get_gc. Different values are needed 52 * for a DDF driver or a regular server. This would not be needed if we 53 * had a proper way of creating an endpoint and passing it to our client. 54 */ 55 static void ddev_get_gc_srv(ddev_srv_t *srv, ipc_call_t *icall) 56 { 57 sysarg_t arg2; 58 sysarg_t arg3; 59 errno_t rc; 60 61 printf("ddev_get_gc_srv\n"); 62 63 if (srv->ops->get_gc == NULL) { 64 async_answer_0(icall, ENOTSUP); 65 return; 66 } 67 68 rc = srv->ops->get_gc(srv->arg, &arg2, &arg3); 69 async_answer_2(icall, rc, arg2, arg3); 70 } 71 47 72 void ddev_conn(ipc_call_t *icall, ddev_srv_t *srv) 48 73 { 49 74 /* Accept the connection */ 50 75 async_accept_0(icall); 51 printf("d isplay_conn\n");76 printf("ddev_conn\n"); 52 77 53 78 while (true) { … … 66 91 switch (method) { 67 92 case DDEV_GET_GC: 93 ddev_get_gc_srv(srv, &call); 94 break; 68 95 default: 69 96 async_answer_0(&call, ENOTSUP); -
uspace/lib/ddev/test/ddev.c
r71cbe5c r0b63dc2 48 48 static void test_ddev_conn(ipc_call_t *, void *); 49 49 50 static errno_t test_get_gc(void *, gfx_context_t **);50 static errno_t test_get_gc(void *, sysarg_t *, sysarg_t *); 51 51 static errno_t test_gc_set_color(void *, gfx_color_t *); 52 52 … … 215 215 } 216 216 217 static errno_t test_get_gc(void *arg, gfx_context_t **rgc) 218 { 219 *rgc = NULL; 220 return ENOTSUP; 217 static errno_t test_get_gc(void *arg, sysarg_t *arg2, sysarg_t *arg3) 218 { 219 *arg2 = 0; 220 *arg3 = 42; 221 return EOK; 221 222 } 222 223
Note:
See TracChangeset
for help on using the changeset viewer.