debugging and related improvements for new event scheduler.

This commit is contained in:
gardners 2012-06-22 13:56:53 +09:30
parent 7ea0c2f3bf
commit f0ed4b2e52
3 changed files with 20 additions and 14 deletions

View File

@ -110,6 +110,8 @@ int fd_checkalarms()
for(i=0;i<alarmcount;i++) for(i=0;i<alarmcount;i++)
{ {
if (alarms[i].next_alarm<=now) { if (alarms[i].next_alarm<=now) {
WHYF("Alarm callback triggered for %s()",
fd_funcname(alarms[i].func));
alarms[i].func(); alarms[i].func();
if (!alarms[i].repeat_every) { if (!alarms[i].repeat_every) {
/* Alarm was one-shot, so erase alarm */ /* Alarm was one-shot, so erase alarm */
@ -146,7 +148,8 @@ int fd_poll()
if (r>0) { if (r>0) {
for(i=0;i<fdcount;i++) for(i=0;i<fdcount;i++)
if (fds[i].revents) { if (fds[i].revents) {
fprintf(stderr,"Action on fd#%d\n",fds[i].fd); fprintf(stderr,"Action on fd#%d, calling %s\n",
fds[i].fd,fd_funcname(fd_functions[fds[i].fd]));
fd_functions[fds[i].fd](fds[i].fd); fd_functions[fds[i].fd](fds[i].fd);
} }
} }
@ -179,19 +182,26 @@ func_descriptions func_names[]={
{NULL,NULL} {NULL,NULL}
}; };
char *fd_funcname(void *addr)
{
int j;
char *funcname="unknown";
for(j=0;func_names[j].addr;j++)
if (func_names[j].addr==addr)
funcname=func_names[j].description;
return funcname;
}
int fd_list() int fd_list()
{ {
long long now=overlay_gettime_ms(); long long now=overlay_gettime_ms();
int i,j; int i;
fprintf(stderr,"\n"); fprintf(stderr,"\n");
fprintf(stderr,"List of timed callbacks:\n"); fprintf(stderr,"List of timed callbacks:\n");
fprintf(stderr,"------------------------\n"); fprintf(stderr,"------------------------\n");
for(i=0;i<alarmcount;i++) { for(i=0;i<alarmcount;i++) {
char *funcname="unknown"; fprintf(stderr,"%s() in %lldms ",fd_funcname(alarms[i].func),
for(j=0;func_names[j].addr;j++) alarms[i].next_alarm-now);
if (func_names[j].addr==alarms[i].func)
funcname=func_names[j].description;
fprintf(stderr,"%s() in %lldms ",funcname,alarms[i].next_alarm-now);
if (alarms[i].repeat_every) fprintf(stderr,"and every %lldms", if (alarms[i].repeat_every) fprintf(stderr,"and every %lldms",
alarms[i].repeat_every); alarms[i].repeat_every);
fprintf(stderr,"\n"); fprintf(stderr,"\n");
@ -200,7 +210,6 @@ int fd_list()
fprintf(stderr,"List of watched file descriptors:\n"); fprintf(stderr,"List of watched file descriptors:\n");
fprintf(stderr,"---------------------------------\n"); fprintf(stderr,"---------------------------------\n");
for(i=0;i<fdcount;i++) { for(i=0;i<fdcount;i++) {
char *funcname="unknown";
char *eventdesc="<somethinged>"; char *eventdesc="<somethinged>";
if ((fds[i].events&POLL_IN)&&(fds[i].events&POLL_OUT)) if ((fds[i].events&POLL_IN)&&(fds[i].events&POLL_OUT))
eventdesc="read or written"; eventdesc="read or written";
@ -209,11 +218,8 @@ int fd_list()
else if (fds[i].events&POLL_OUT) else if (fds[i].events&POLL_OUT)
eventdesc="written"; eventdesc="written";
for(j=0;func_names[j].addr;j++) fprintf(stderr,"%s() when fd#%d can be %s\n",
if (func_names[j].addr==fd_functions[fds[i].fd]) fd_funcname(fd_functions[fds[i].fd]),fds[i].fd,eventdesc);
funcname=func_names[j].description;
fprintf(stderr,"%s() when fd#%d can be %s\n",funcname,fds[i].fd,
eventdesc);
} }
return 0; return 0;
} }

View File

@ -172,7 +172,6 @@ int overlayServerMode()
while(1) { while(1) {
/* Check for activitiy and respond to it */ /* Check for activitiy and respond to it */
fd_list();
fd_poll(); fd_poll();
/* Work out how long we can wait before we need to tick */ /* Work out how long we can wait before we need to tick */

View File

@ -1544,6 +1544,7 @@ int fd_setalarm(void (*func),long long first_alarm_in,int repeat_every);
int fd_teardown(int fd); int fd_teardown(int fd);
int fd_watch(int fd,void (*func)(int fd),int events); int fd_watch(int fd,void (*func)(int fd),int events);
int fd_list(); int fd_list();
char *fd_funcname(void *addr);
int rhizome_server_start(); int rhizome_server_start();
void rhizome_enqueue_suggestions(); void rhizome_enqueue_suggestions();