|
|
| version 1.26.2.12, 2015/07/02 21:52:29 | version 1.27.2.3, 2015/07/19 23:38:09 |
|---|---|
| Line 82 static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] | Line 82 static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] |
| static volatile uintptr_t _glSigArg = 0; | static volatile uintptr_t _glSigArg = 0; |
| #pragma GCC visibility push(hidden) | |
| static int | |
| rpc_funcs_cmp(struct tagRPCFunc *a, struct tagRPCFunc *b) | |
| { | |
| int ret; | |
| assert(a && b); | |
| ret = AIT_KEY(&a->func_name) - AIT_KEY(&b->func_name); | |
| if (ret < 0) | |
| return -1; | |
| else if (ret > 0) | |
| return 1; | |
| return ret; | |
| } | |
| AVL_GENERATE(tagRPCFuncs, tagRPCFunc, func_node, rpc_funcs_cmp); | |
| #pragma GCC visibility pop | |
| void | void |
| rpc_freeCli(rpc_cli_t * __restrict c) | rpc_freeCli(rpc_cli_t * __restrict c) |
| { | { |
| Line 547 rxUDPPacket(sched_task_t *task) | Line 524 rxUDPPacket(sched_task_t *task) |
| /* receive connect packet */ | /* receive connect packet */ |
| AIT_SET_BUF(&b, NULL, srv->srv_netbuf); | AIT_SET_BUF(&b, NULL, srv->srv_netbuf); |
| salen = sa.ss.ss_len = sizeof(sockaddr_t); | salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t); |
| rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); | rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); |
| rpc = (struct tagRPCCall*) AIT_GET_BUF(&b); | rpc = (struct tagRPCCall*) AIT_GET_BUF(&b); |
| if (rlen < sizeof(struct tagRPCCall)) | if (rlen < sizeof(struct tagRPCCall)) |
| Line 687 rxRAWPacket(sched_task_t *task) | Line 664 rxRAWPacket(sched_task_t *task) |
| /* receive connect packet */ | /* receive connect packet */ |
| AIT_SET_BUF(&b, NULL, srv->srv_netbuf); | AIT_SET_BUF(&b, NULL, srv->srv_netbuf); |
| salen = sa.ss.ss_len = sizeof(sockaddr_t); | salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t); |
| rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); | rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen); |
| if (sa.sa.sa_family == AF_INET) { | if (sa.sa.sa_family == AF_INET) { |
| struct ip *h; | struct ip *h; |
| Line 1190 end: | Line 1167 end: |
| static void * | static void * |
| flushBLOB(sched_task_t *task) | flushBLOB(sched_task_t *task) |
| { | { |
| #ifndef atomic_load_acq_ptr | |
| uintptr_t sigArg = atomic_load_acq_ptr(&_glSigArg); | uintptr_t sigArg = atomic_load_acq_ptr(&_glSigArg); |
| #else | |
| uintptr_t sigArg = *((volatile uintptr_t*) &_glSigArg); | |
| #endif | |
| rpc_srv_t *srv = sigArg ? (void*) sigArg : TASK_ARG(task); | rpc_srv_t *srv = sigArg ? (void*) sigArg : TASK_ARG(task); |
| rpc_blob_t *b, *tmp; | rpc_blob_t *b, *tmp; |
| Line 1432 rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) | Line 1413 rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) |
| /* disabled kqueue support in libaitsched */ | /* disabled kqueue support in libaitsched */ |
| struct sigaction sa; | struct sigaction sa; |
| #ifndef atomic_store_rel_ptr | |
| atomic_store_rel_ptr(&_glSigArg, (uintptr_t) srv); | atomic_store_rel_ptr(&_glSigArg, (uintptr_t) srv); |
| #else | |
| *((volatile uintptr_t*) &_glSigArg) = (uintptr_t) srv; | |
| #endif | |
| memset(&sa, 0, sizeof sa); | memset(&sa, 0, sizeof sa); |
| sigemptyset(&sa.sa_mask); | sigemptyset(&sa.sa_mask); |
| Line 1621 rpc_srv_endServer(rpc_srv_t ** __restrict psrv) | Line 1606 rpc_srv_endServer(rpc_srv_t ** __restrict psrv) |
| /* if send kill to blob server */ | /* if send kill to blob server */ |
| rpc_srv_endBLOBServer(*psrv); | rpc_srv_endBLOBServer(*psrv); |
| /* wait for BLOB server done */ | |
| while ((*psrv)->srv_blob.root) | |
| usleep(1000); | |
| (*psrv)->srv_kill = 1; | (*psrv)->srv_kill = 1; |
| sleep(RPC_SCHED_POLLING); | sleep(RPC_SCHED_POLLING); |