taglinefilesource code
fa1161drivers/char/tty_io.cstruct fasync_struct *fa, *prev;
fa1167drivers/char/tty_io.cfor (fa = tty->fasync, prev = 0; fa; prev= fa, fa = fa->fa_next) {
fa1168drivers/char/tty_io.cif (fa->fa_file == filp)
fa1173drivers/char/tty_io.cif (fa)
fa1175drivers/char/tty_io.cfa = (struct fasync_struct *)kmalloc(sizeof(struct fasync_struct), GFP_KERNEL);
fa1176drivers/char/tty_io.cif (!fa)
fa1178drivers/char/tty_io.cfa->magic = FASYNC_MAGIC;
fa1179drivers/char/tty_io.cfa->fa_file = filp;
fa1180drivers/char/tty_io.cfa->fa_next = tty->fasync;
fa1181drivers/char/tty_io.ctty->fasync = fa;
fa1191drivers/char/tty_io.cif (!fa)
fa1194drivers/char/tty_io.cprev->fa_next = fa->fa_next;
fa1196drivers/char/tty_io.ctty->fasync = fa->fa_next;
fa1197drivers/char/tty_io.ckfree_s(fa, sizeof(struct fasync_struct));
fa174fs/fcntl.cvoid kill_fasync(struct fasync_struct *fa, int sig)
fa176fs/fcntl.cwhile (fa) {
fa177fs/fcntl.cif (fa->magic != FASYNC_MAGIC) {
fa182fs/fcntl.cif (fa->fa_file->f_owner > 0)
fa183fs/fcntl.ckill_proc(fa->fa_file->f_owner, sig, 1);
fa185fs/fcntl.ckill_pg(-fa->fa_file->f_owner, sig, 1);
fa186fs/fcntl.cfa = fa->fa_next;
fa382include/linux/fs.hextern void kill_fasync(struct fasync_struct *fa, int sig);
fa503net/socket.cstruct fasync_struct *fa, *fna=NULL, **prev;
fa521net/socket.cfor(fa=*prev; fa!=NULL; prev=&fa->fa_next,fa=*prev)
fa522net/socket.cif(fa->fa_file==filp)
fa527net/socket.cif(fa!=NULL)
fa540net/socket.cif(fa!=NULL)
fa542net/socket.c*prev=fa->fa_next;
fa543net/socket.ckfree_s(fa,sizeof(struct fasync_struct));