atnotify.c
来自「著名操作系统Plan 9的第三版的部分核心源代码。现在很难找到了。Plan 9是」· C语言 代码 · 共 59 行
C
59 行
#include <u.h>#include <libc.h>#define NFN 33static int (*onnot[NFN])(void*, char*);static Lock onnotlock;staticvoidnotifier(void *v, char *s){ int i; for(i=0; i<NFN; i++) if(onnot[i] && ((*onnot[i])(v, s))){ noted(NCONT); return; } noted(NDFLT);}intatnotify(int (*f)(void*, char*), int in){ int i, n, ret; static int init; if(!init){ notify(notifier); init = 1; /* assign = */ } ret = 0; lock(&onnotlock); if(in){ for(i=0; i<NFN; i++) if(onnot[i] == 0) { onnot[i] = f; ret = 1; break; } }else{ n = 0; for(i=0; i<NFN; i++) if(onnot[i]){ if(ret==0 && onnot[i]==f){ onnot[i] = 0; ret = 1; }else n++; } if(n == 0){ init = 0; notify(0); } } unlock(&onnotlock); return ret;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?