Rev 1489 | Rev 1531 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1489 | Rev 1518 | ||
|---|---|---|---|
| Line 157... | Line 157... | ||
| 157 | static void got_answer(void *private, int retval, ipc_call_t *data) |
157 | static void got_answer(void *private, int retval, ipc_call_t *data) |
| 158 | { |
158 | { |
| 159 | printf("Retval: %d...%s...%zX, %zX\n", retval, private, |
159 | printf("Retval: %d...%s...%zX, %zX\n", retval, private, |
| 160 | IPC_GET_ARG1(*data), IPC_GET_ARG2(*data)); |
160 | IPC_GET_ARG1(*data), IPC_GET_ARG2(*data)); |
| 161 | } |
161 | } |
| 162 | static void test_async_ipc(void) |
- | |
| 163 | { |
- | |
| 164 | ipc_call_t data; |
- | |
| 165 | int i; |
- | |
| 166 | - | ||
| 167 | printf("Sending ping\n"); |
- | |
| 168 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 169 | "Pong1", got_answer); |
- | |
| 170 | ipc_call_async_2(PHONE_NS, NS_PING, 2, 0xbeefbee4, |
- | |
| 171 | "Pong2", got_answer); |
- | |
| 172 | ipc_call_async_2(PHONE_NS, NS_PING, 3, 0xbeefbee4, |
- | |
| 173 | "Pong3", got_answer); |
- | |
| 174 | ipc_call_async_2(PHONE_NS, NS_PING, 4, 0xbeefbee4, |
- | |
| 175 | "Pong4", got_answer); |
- | |
| 176 | ipc_call_async_2(PHONE_NS, NS_PING, 5, 0xbeefbee4, |
- | |
| 177 | "Pong5", got_answer); |
- | |
| 178 | ipc_call_async_2(PHONE_NS, NS_PING, 6, 0xbeefbee4, |
- | |
| 179 | "Pong6", got_answer); |
- | |
| 180 | printf("Waiting forever...\n"); |
- | |
| 181 | for (i=0; i<100;i++) |
- | |
| 182 | printf("."); |
- | |
| 183 | printf("\n"); |
- | |
| 184 | ipc_wait_for_call(&data); |
- | |
| 185 | printf("Received call???\n"); |
- | |
| 186 | } |
- | |
| 187 | 162 | ||
| 188 | 163 | ||
| 189 | static void got_answer_2(void *private, int retval, ipc_call_t *data) |
164 | static void got_answer_2(void *private, int retval, ipc_call_t *data) |
| 190 | { |
165 | { |
| 191 | printf("Pong\n"); |
166 | printf("Pong\n"); |
| 192 | } |
167 | } |
| 193 | static void test_advanced_ipc(void) |
- | |
| 194 | { |
- | |
| 195 | int res; |
- | |
| 196 | ipcarg_t phonead; |
- | |
| 197 | ipc_callid_t callid; |
- | |
| 198 | ipc_call_t data; |
- | |
| 199 | int i; |
- | |
| 200 | - | ||
| 201 | printf("Asking 0 to connect to me...\n"); |
- | |
| 202 | res = ipc_connect_to_me(0, 1, 2, &phonead); |
- | |
| 203 | printf("Result: %d - phonead: %llu\n", res, phonead); |
- | |
| 204 | for (i=0; i < 100; i++) { |
- | |
| 205 | printf("----------------\n"); |
- | |
| 206 | ipc_call_async(PHONE_NS, NS_PING_SVC, 0, "prov", |
- | |
| 207 | got_answer_2); |
- | |
| 208 | callid = ipc_wait_for_call(&data); |
- | |
| 209 | printf("Received ping\n"); |
- | |
| 210 | ipc_answer_fast(callid, 0, 0, 0); |
- | |
| 211 | } |
- | |
| 212 | // callid = ipc_wait_for_call(&data, NULL); |
- | |
| 213 | } |
- | |
| 214 | 168 | ||
| 215 | static void test_connection_ipc(void) |
169 | static void test_connection_ipc(void) |
| 216 | { |
170 | { |
| 217 | int res; |
171 | int res; |
| 218 | ipcarg_t result; |
172 | ipcarg_t result; |
| Line 225... | Line 179... | ||
| 225 | res = ipc_call_sync(res, NS_PING, 0xbeef,&result); |
179 | res = ipc_call_sync(res, NS_PING, 0xbeef,&result); |
| 226 | printf("Retval: %d - received: %X\n", res, result); |
180 | printf("Retval: %d - received: %X\n", res, result); |
| 227 | 181 | ||
| 228 | } |
182 | } |
| 229 | 183 | ||
| 230 | static void test_hangup(void) |
- | |
| 231 | { |
- | |
| 232 | int phoneid; |
- | |
| 233 | ipc_call_t data; |
- | |
| 234 | ipc_callid_t callid; |
- | |
| 235 | int i; |
- | |
| 236 | - | ||
| 237 | printf("Starting connect...\n"); |
- | |
| 238 | phoneid = ipc_connect_me_to(PHONE_NS, 10, 20); |
- | |
| 239 | printf("Phoneid: %d, pinging\n", phoneid); |
- | |
| 240 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 241 | "Pong1", got_answer); |
- | |
| 242 | printf("Hangin up\n"); |
- | |
| 243 | ipc_hangup(phoneid); |
- | |
| 244 | printf("Connecting\n"); |
- | |
| 245 | phoneid = ipc_connect_me_to(PHONE_NS, 10, 20); |
- | |
| 246 | printf("Newphid: %d\n", phoneid); |
- | |
| 247 | for (i=0; i < 1000; i++) { |
- | |
| 248 | if ((callid=ipc_trywait_for_call(&data))) |
- | |
| 249 | printf("callid: %d\n"); |
- | |
| 250 | } |
- | |
| 251 | printf("New new phoneid: %d\n", ipc_connect_me_to(PHONE_NS, 10, 20)); |
- | |
| 252 | } |
- | |
| 253 | - | ||
| 254 | static void test_slam(void) |
- | |
| 255 | { |
- | |
| 256 | int i; |
- | |
| 257 | ipc_call_t data; |
- | |
| 258 | ipc_callid_t callid; |
- | |
| 259 | - | ||
| 260 | printf("ping"); |
- | |
| 261 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 262 | "Pong1", got_answer); |
- | |
| 263 | printf("slam"); |
- | |
| 264 | ipc_call_async_2(PHONE_NS, NS_HANGUP, 1, 0xbeefbee2, |
- | |
| 265 | "Hang", got_answer); |
- | |
| 266 | printf("ping2\n"); |
- | |
| 267 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 268 | "Ping2", got_answer); |
- | |
| 269 | - | ||
| 270 | for (i=0; i < 1000; i++) { |
- | |
| 271 | if ((callid=ipc_trywait_for_call(&data))) |
- | |
| 272 | printf("callid: %d\n"); |
- | |
| 273 | } |
- | |
| 274 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 275 | "Pong1", got_answer); |
- | |
| 276 | printf("Closing file\n"); |
- | |
| 277 | ipc_hangup(PHONE_NS); |
- | |
| 278 | ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2, |
- | |
| 279 | "Pong1", got_answer); |
- | |
| 280 | ipc_wait_for_call(&data); |
- | |
| 281 | } |
- | |
| 282 | - | ||
| 283 | static int ptest(void *arg) |
184 | static int ptest(void *arg) |
| 284 | { |
185 | { |
| 285 | stage = 1; |
186 | stage = 1; |
| 286 | printf("Pseudo thread stage%d.\n", stage); |
187 | printf("Pseudo thread stage%d.\n", stage); |
| 287 | stage++; |
188 | stage++; |