err_t sys_mbox_new(sys_mbox_t *mbox, int size) { (void)size; mbox->waiting = 0; cib_init(&mbox->cib, SYS_MBOX_SIZE); mutex_init(&mbox->mutex); if (sema_create(&mbox->not_empty, 0) < 0) { return ERR_VAL; } if (sema_create(&mbox->not_full, 0) < 0) { return ERR_VAL; } return ERR_OK; }
err_t sys_sem_new(sys_sem_t *sem, u8_t count) { if (sema_create((sema_t *)sem, (unsigned int)count) < 0) { return ERR_VAL; } return ERR_OK; }
err_t sys_sem_new(sys_sem_t *sem, u8_t count) { sema_create((sema_t *)sem, (unsigned int)count); return ERR_OK; }
int main (int argc, char **argv) { int opt; char *configfile = "hosts"; JRB hosts, node, node2; Host *host, *join, *me; int nhosts; int i, j; Message *m; char dest[160]; char msg[256]; Key tmp; ChimeraHost ch; double start; while ((opt = getopt (argc, argv, OPTSTR)) != EOF) { switch ((char) opt) { case 'f': configfile = optarg; break; default: fprintf (stderr, "invalid option %c\n", (char) opt); fprintf (stderr, "usage: %s\n", USAGE); exit (1); } } sem = sema_create (0); state = (ChimeraState *) malloc (sizeof (ChimeraState)); me = (Host *) malloc (sizeof (Host)); me->name = "localhost"; me->port = 11110; me->hnp = "localhost:11110"; hosts = read_hosts (configfile, &nhosts); state->log = log_init (); log_direct (state->log, LOG_ERROR, stderr); log_direct (state->log, LOG_WARN, stderr); key_init (); state->message = message_init (state, 11110); message_handler (state, 21, hello, 1); message_handler (state, 22, fwd, 1); message_handler (state, 23, del, 1); message_handler (state, 24, NULL, 1); srand (time (NULL)); /* This part runs bighost in different hosts */ announced = 0; jrb_traverse (node, hosts) { if (announced == 0) { join = NULL; } else { i = (rand () % announced) + 1; jrb_traverse (node2, hosts) { i--; if (i == 0) break; } join = (Host *) node2->val.v; } host = (Host *) node->val.v; start_host (host, join); dsleep (0.1); }