Changeset 2d11a7d8 in mainline for uspace/app/tester/ipc/register.c
- Timestamp:
- 2009-06-30T15:54:14Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9c40f88
- Parents:
- db24058
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/tester/ipc/register.c
rdb24058 r2d11a7d8 33 33 #include "../tester.h" 34 34 35 #define MAX_CONNECTIONS 50 36 37 static int connections[MAX_CONNECTIONS]; 38 35 39 static void client_connection(ipc_callid_t iid, ipc_call_t *icall) 36 40 { 37 ipc_callid_t callid; 38 ipc_call_t call; 39 ipcarg_t phonehash = icall->in_phone_hash; 40 int retval; 41 int i; 42 43 printf("Connected phone: %P, accepting\n", icall->in_phone_hash); 41 unsigned int i; 42 43 TPRINTF("Connected phone %#x accepting\n", icall->in_phone_hash); 44 44 ipc_answer_0(iid, EOK); 45 for (i = 0; i < 1024; i++)45 for (i = 0; i < MAX_CONNECTIONS; i++) { 46 46 if (!connections[i]) { 47 connections[i] = phonehash;47 connections[i] = icall->in_phone_hash; 48 48 break; 49 49 } 50 } 50 51 51 while (1) { 52 callid = async_get_call(&call); 52 while (true) { 53 ipc_call_t call; 54 ipc_callid_t callid = async_get_call(&call); 55 int retval; 56 53 57 switch (IPC_GET_METHOD(call)) { 54 58 case IPC_M_PHONE_HUNGUP: 55 printf("Phone (%P) hung up.\n", phonehash);59 TPRINTF("Phone %#x hung up\n", icall->in_phone_hash); 56 60 retval = 0; 57 61 break; 62 case IPC_TEST_METHOD: 63 TPRINTF("Received well known message from %#x: %#x\n", 64 icall->in_phone_hash, callid); 65 ipc_answer_0(callid, EOK); 66 break; 58 67 default: 59 printf("Received message from %P: %X\n", phonehash, 60 callid); 61 for (i = 0; i < 1024; i++) 62 if (!callids[i]) { 63 callids[i] = callid; 64 break; 65 } 66 continue; 68 TPRINTF("Received unknown message from %#x: %#x\n", 69 icall->in_phone_hash, callid); 70 ipc_answer_0(callid, ENOENT); 71 break; 67 72 } 68 ipc_answer_0(callid, retval);69 73 } 70 74 } 71 75 72 char * test_register(bool quiet)76 char *test_register(void) 73 77 { 74 int i;78 async_set_client_connection(client_connection); 75 79 76 async_set_client_connection(client_connection); 77 78 for (i = IPC_TEST_START; i < IPC_TEST_START + 10; i++) { 79 ipcarg_t phonead; 80 int res = ipc_connect_to_me(PHONE_NS, i, 0, 0, &phonead); 81 if (!res) 82 break; 83 printf("Failed registering as %d..:%d\n", i, res); 84 } 85 printf("Registered as service: %d\n", i); 86 myservice = i; 80 ipcarg_t phonead; 81 int res = ipc_connect_to_me(PHONE_NS, IPC_TEST_SERVICE, 0, 0, &phonead); 82 if (res != 0) 83 return "Failed registering IPC service"; 84 85 TPRINTF("Registered as service %u, accepting connections\n", IPC_TEST_SERVICE); 86 async_manager(); 87 87 88 88 return NULL;
Note:
See TracChangeset
for help on using the changeset viewer.