static void event_queue () { struct event *e = events; struct event **p = &events; unsigned long long cts = dt_to_unix (dt_get ()); unsigned long long nts = 0 - 1; while (e != (struct event *)0) { unsigned long long ts = dt_to_unix (e->queue_time); if (e->model == em_seconds) { ts += e->model_data.seconds; if (ts <= cts) /* trigger event */ { event_dispatch (e, p, ts); return; } else if (ts < nts) { nts = ts; } } p = &(e->next); e = e->next; } event_set_signal (cts, nts); }
static struct event *get_event () { struct memory_pool pool = MEMORY_POOL_INITIALISER (sizeof (struct event)); struct event *ev = get_pool_mem (&pool); ev->queue_time = dt_get (); ev->repeat = 1; ev->model = em_seconds; ev->model_data.seconds = 5; ev->output = sx_list1 (sym_tick); ev->then = sx_end_of_list; ev->next = events; events = ev; return ev; }
long get_checksum(void *buf, int count, MPI_Datatype dt) { int done; PNMPIMOD_Datatype_Parameters_t ref; char *b; int l, s, r; MPI_Datatype t; long checksum; checksum = 0; if ((abs(verbosity_level) & 0xff) >= 5) { printf("In Checksum -( %i)---------------------------\n", count); } dt_get(buf, count, dt, &ref); do { PNMPIMOD_Datatype_getItem(&ref, &b, &t, &l, &s, &done) #ifdef USE_FUNCTIONS ; #endif r = sizeof(checksum); while (r <= l * s) { if ((abs(verbosity_level) & 0xff) >= 5) { printf("In Checksum %x %i %i %i / val %li\n", b, r, l, s, *((long *)b)); } checksum ^= *((long *)b); b += sizeof(checksum); r += sizeof(checksum); } } while (!done); dt_del(&ref); return checksum; }
static void output_add (struct sexpr_io *io) { struct memory_pool pool = MEMORY_POOL_INITIALISER (sizeof (struct output_channel)); struct output_channel *out = get_pool_mem (&pool); struct datetime dt; out->io = io; out->next = output_channels; output_channels = out; multiplex_add_sexpr (io, timer_io_read, (void *)0); dt = dt_get (); sx_write (io, sx_list3 (sym_link_initialised, make_integer (dt.date), make_integer (dt.time))); }
void main() // Main function { badge_setup(); // Start badge systems dt_run(dt); // Start system timer with dt oledprint("Day/Time"); // Display heading text_size(SMALL); // Change to small text while(1) // Main loop { dt = dt_get(); // Get system time int hrs = dt.h % 12; // Adjust to 12 hours if(dt.h == 0 || dt.h == 12) hrs = 12; cursor(0, 5); // Position cursor row 5 // Display time with formatting flags oledprint(" %04d.%02d.%02d\n\n %02d:%02d:%02d ", dt.y, dt.mo, dt.d, hrs, dt.m, dt.s); if(dt.h >= 12) oledprint("PM"); // Display AM/PM else oledprint("AM"); } }
void RECV_P2P_END(void *buf, int count, MPI_Datatype dt, int node, int tag, MPI_Comm comm, int err, void **ptr, void **midptr, int type) { long checksum,incoming; MPI_Status status; int done; PNMPIMOD_Datatype_Parameters_t ref; char *b; int l,s,i; MPI_Datatype t; if (comm!=MPI_COMM_NULL) { checksum=get_checksum(buf,count,dt); PMPI_Recv(&incoming,1,MPI_LONG,node,tag,comm,&status); if ((checksum==incoming) || ((type && PNMPIMOD_COMM_COLL_REDUCE)!=0)) { if ((abs(verbosity_level) & 0xff)>=2) { printf("Checksum OK\n"); } } else { printf("Checksum Error - %li instead of %li (dt=%i)\n",checksum,incoming,dt); if ((abs(verbosity_level) & 0xff)>=3) { printf("CSE - Got the following\n"); dt_get(buf, count, dt, &ref); do { PNMPIMOD_Datatype_getItem(&ref,&b,&t,&l,&s,&done) #ifdef USE_FUNCTIONS ; #endif printf("\t%i ",l); switch (t) { case MPI_INT : printf("INT "); break; case MPI_SHORT : printf("SHORT "); break; case MPI_LONG : printf("LONG "); break; case MPI_CHAR : printf("CHAR "); break; case MPI_DOUBLE : printf("DOUBLE"); break; case MPI_FLOAT : printf("FLOAT "); break; default: printf("Other"); } printf(" of size %i at buf %16p / %li == ",s,b,((long) b)-((long) buf)); for (i=0; i<l; i++) { switch (t) { case MPI_INT : printf(" %i",((int*)b)[i]); break; case MPI_SHORT : printf(" %i",((short*)b)[i]); break; case MPI_LONG : printf(" %li",((long*)b)[i]); break; case MPI_CHAR : printf(" %c",((char*)b)[i]); break; case MPI_DOUBLE : printf(" %f",((double*)b)[i]); break; case MPI_FLOAT : printf(" %f",((float*)b)[i]); break; } } printf("\n"); fflush(stdout); } while (!done); dt_del(&ref); } } if ((abs(verbosity_level) & 0xff)>=4) { PMPI_Recv(buf,count,dt,node,tag,comm,&status); if (checksum!=incoming) { printf("CSE: Message should have been\n"); dt_get(buf, count, dt, &ref); do { PNMPIMOD_Datatype_getItem(&ref,&b,&t,&l,&s,&done) #ifdef USE_FUNCTIONS ; #endif printf("\t%i ",l); switch (t) { case MPI_INT : printf("INT "); break; case MPI_SHORT : printf("SHORT "); break; case MPI_LONG : printf("LONG "); break; case MPI_CHAR : printf("CHAR "); break; case MPI_DOUBLE : printf("DOUBLE"); break; case MPI_FLOAT : printf("FLOAT "); break; default: printf("Other"); } printf(" of size %i at buf %16p / %li == ",s,b,((long) b)-((long) buf)); for (i=0; i<l; i++) { switch (t) { case MPI_INT : printf(" %i",((int*)b)[i]); break; case MPI_SHORT : printf(" %i",((short*)b)[i]); break; case MPI_LONG : printf(" %li",((long*)b)[i]); break; case MPI_CHAR : printf(" %c",((char*)b)[i]); break; case MPI_DOUBLE : printf(" %f",((double*)b)[i]); break; case MPI_FLOAT : printf(" %f",((float*)b)[i]); break; } } printf("\n"); fflush(stdout); } while (!done); dt_del(&ref); } } if (checksum!=incoming) { if (verbosity_level==1) { while (0); } if (verbosity_level==-1) { *((int*) 0)=0; } } } }
void SEND_P2P_ASYNC_MID1(void *buf, int count, MPI_Datatype dt, int node, int tag, MPI_Comm comm, void **ptr, int type) { long checksum; int done; PNMPIMOD_Datatype_Parameters_t ref; char *b; int l,s,i; MPI_Datatype t; if (comm!=MPI_COMM_NULL) { checksum=get_checksum(buf,count,dt); if ((abs(verbosity_level) & 0xff)>=3) { printf("Sending checksum %li (dt=%i)\n",checksum,dt); dt_get(buf, count, dt, &ref); do { PNMPIMOD_Datatype_getItem(&ref,&b,&t,&l,&s,&done) #ifdef USE_FUNCTIONS ; #endif printf("\t%i ",l); switch (t) { case MPI_INT : printf("INT "); break; case MPI_SHORT : printf("SHORT "); break; case MPI_LONG : printf("LONG "); break; case MPI_CHAR : printf("CHAR "); break; case MPI_DOUBLE : printf("DOUBLE"); break; case MPI_FLOAT : printf("FLOAT "); break; default: printf("Other"); } printf(" of size %i at buf %16p / %li == ",s,b,((long) b)-((long) buf)); for (i=0; i<l; i++) { switch (t) { case MPI_INT : printf(" %i",((int*)b)[i]); break; case MPI_SHORT : printf(" %i",((short*)b)[i]); break; case MPI_LONG : printf(" %li",((long*)b)[i]); break; case MPI_CHAR : printf(" %c",((char*)b)[i]); break; case MPI_DOUBLE : printf(" %f",((double*)b)[i]); break; case MPI_FLOAT : printf(" %f",((float*)b)[i]); break; } } printf("\n"); fflush(stdout); } while (!done); dt_del(&ref); } PMPI_Send(&checksum,1,MPI_LONG,node,tag,comm); if ((abs(verbosity_level) & 0xff)>=4) { PMPI_Send(buf,count,dt,node,tag,comm); } } }