int main (int argc, char *argv[]) { pwr_tStatus sts = 1; qdb_sPort port; qdb_sPort *pp; qcom_sQid qid = qdb_cQimport; qdb_sNode *np; errh_Init("pwr_qimp"); if (!qcom_Init(&sts, NULL)) exit(sts); if (!qcom_CreateQ(&sts, &qid, NULL)) exit(sts); port.sa.sin_family = AF_INET; port.sa.sin_addr.s_addr = htonl(INADDR_ANY); port.sa.sin_port = qdb->my_node->sa.sin_port; pp = qnet_Open(&sts, &port); while (qdb->g->up) { np = qnet_Get(&sts, pp); if (np->bp == NULL) pwr_Bugcheck(QCOM__WEIRD, "(np->bp == NULL)"); linkEvent(pp, np); } qnet_Close(&sts, pp); qcom_Exit(&sts); exit(QCOM__SUCCESS); }
static pwr_tStatus terminate ( ini_sContext *cp ) { pwr_tStatus sts; qcom_SignalAnd(&sts, &qcom_cQini, 0); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_terminate); qcom_Exit(NULL); /* Now sleep for a while */ sleep(3); /* Unlink shared memory and semaphores */ qdb_UnlinkDb(); /* Unlink errlog mwessage queue */ errl_Unlink(); exit(1); }
static pwr_tStatus terminate ( ini_sContext *cp ) { pwr_tStatus sts; qcom_SignalAnd(&sts, &qcom_cQini, 0); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_terminate); //qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_oldPlcStop); //qcom_WaitAnd(&sts, &cp->eventQ, &qcom_cQini, ini_mEvent_oldPlcStopDone, qcom_cTmoEternal); qcom_Exit(NULL); /* Kill programs which until now doesn't handle qcom */ /* for (pp = lst_Succ(NULL, &cp->proc_lh, &pl); pp != NULL; pp = lst_Succ(NULL, pl, &pl)) { if (strncmp("pwr_webmonmh", pp->proc.name, 12) == 0) { kill(pp->proc.pid, SIGKILL); } else if (strncmp("pwr_webmon", pp->proc.name, 10) == 0) { kill(pp->proc.pid, SIGKILL); } } */ /* Now sleep for a while */ sleep(3); /* Unlink shared memory and semaphores */ gdb_UnlinkDb(); qdb_UnlinkDb(); /* Destroy message handler semaphore */ mh_UtilDestroyEvent(); #if defined OS_POISIX /* Unlink errlog mwessage queue */ errl_Unlink(); #endif exit(1); }
static pwr_tStatus terminate() { pwr_tStatus sts; qcom_SignalAnd(&sts, &qcom_cQini, 0); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_terminate); // qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_oldPlcStop); // qcom_WaitAnd(&sts, &cp->eventQ, &qcom_cQini, ini_mEvent_oldPlcStopDone, // qcom_cTmoEternal); qcom_Exit(NULL); /* Kill programs which until now doesn't handle qcom */ /* for (pp = lst_Succ(NULL, &cp->proc_lh, &pl); pp != NULL; pp = lst_Succ(NULL, pl, &pl)) { if (str_StartsWith(pp->proc.name, "pwr_webmonmh")) { kill(pp->proc.pid, SIGKILL); } else if (str_StartsWith(pp->proc.name, "pwr_webmon")) { kill(pp->proc.pid, SIGKILL); } } */ /* Now sleep for a while */ sleep(3); /* Unlink shared memory and semaphores */ gdb_UnlinkDb(); qdb_UnlinkDb(); delete_locks(); /* Destroy message handler semaphore */ mh_UtilDestroyEvent(); /* Unlink errlog message queue */ errl_Unlink(); exit(EXIT_SUCCESS); }
main (int argc, char *argv[]) { pwr_tStatus sts; qcom_sQid qid; qcom_sGet get; qcom_sPut put; qcom_sQid loop; int data[DATA_SIZE]; int i; int j; int max = 1000; char *sp; qid = qcom_cNQid; if (argc < 2) exit(12); if (argc > 2) max = atoi(argv[2]); for (j = 0; j < DATA_SIZE; j++) data[j] = j; loop.nid = atoi(argv[1]); loop.qix = qcom_cIloopBack; if (!qcom_Init(&sts, NULL)) exit(sts); if (!qcom_CreateQ(&sts, &qid, NULL)) exit(sts); for (i = 1; i < max; i++) { for (j = 0; j < DATA_SIZE; j++) ++data[j]; sp = qcom_Alloc(&sts, sizeof(data)); if (sp == NULL) exit(sts); memcpy(sp, &data, sizeof(data)); put.type.b = 10; put.type.s = i; put.reply = qid; put.size = sizeof(data); put.data = sp; qcom_Put(&sts, &loop, &put); if (EVEN(sts)) exit(sts); get.data = NULL; sp = qcom_Get(&sts, &qid, &get, qcom_cTmoEternal); if (sp == NULL) continue; for (j = 0; j < DATA_SIZE; j++) { if (data[j] != *(int *)sp) { printf("index...: %d, (%d)\n", j, data[j]); break; } sp += sizeof(int); } // printf("\nsender..: %d,%X\n", get.sender.nid, get.pid); // printf("receiver: %d,%d\n", get.receiver.nid, get.receiver.qix); // printf("reply...: %d,%d\n", get.reply.nid, get.reply.qix); // printf("type....: %d,%d\n", get.type.b, get.type.s); // printf("size....: %d\n", get.size); // printf("memcmp..: %d\n", memcmp(get.data, &data, sizeof(data))); // printf("index...: %d, (%d)\n", j, data[j]); qcom_Free(&sts, get.data); } qcom_Exit(&sts); }
main (int argc, char *argv[]) { pwr_tStatus sts; qcom_sQid qid; qcom_sGet get; qcom_sPut put; qcom_sQid loop; int data[500]; int i; int j; int max = 1000; char *sp; int tmo; qid = qcom_cNQid; if (argc < 2) exit(12); if (argc > 2) max = atoi(argv[2]); for (j = 0; j < 500; j++) data[j] = j; loop.nid = atoi(argv[1]); loop.qix = qcom_cIloopBack; if (!qcom_Init(&sts, NULL)) exit(sts); if (!qcom_CreateQ(&sts, &qid, NULL)) exit(sts); for (i = 1; i < max; i++) { for (j = 0; j < 500; j++) ++data[j]; sp = qcom_Alloc(&sts, sizeof(data)); if (sp == NULL) exit(sts); memcpy(sp, &data, sizeof(data)); put.type.b = 10; put.type.s = i; put.reply = qid; put.size = sizeof(data); put.data = sp; get.data = NULL; tmo = 10 + (i%3)*3000; sp = qcom_Request(&sts, &loop, &put, &qid, &get, tmo); if (sp == NULL) { printf("\n%d tmo: %d empty buffer\n", i, tmo); continue; } for (j = 0; j < 500; j++) { if (data[j] != *(int *)sp) break; sp += sizeof(int); } printf("\nsender..: %d,%X\n", get.sender.nid, get.pid); printf("receiver: %d,%d\n", get.receiver.nid, get.receiver.qix); printf("reply...: %d,%d\n", get.reply.nid, get.reply.qix); printf("type....: %d,%d\n", get.type.b, get.type.s); printf("size....: %d\n", get.size); printf("memcmp..: %d\n", memcmp(get.data, &data, sizeof(data))); printf("index...: %d, (%d)\n", j, data[j]); qcom_Free(&sts, get.data); } qcom_Exit(&sts); }