VFS fasync feature [PATCH]

Rene Janssen (reney@plex.nl)
Sun, 6 Sep 1998 19:50:30 +0000


--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Hello,

This is a patch (against 120) that implements FASYNC/SIGIO for regular fi=
les and
directories. =20

Some caveats :

- reorganized fasync stuff into fs/fasync.c
- _sigpoll : does uid and gid belong in there ?
- added F_SETSIGMASK fcntl() function to set the conditions for which the=
VFS
sends a signal. The flags are defined in asm-i386/fcntl.h. I havent inclu=
ded
fcntl.h patches for other archs yet. Default behaviour is to kill() on _e=
very_
inode change (ATIME included). You can tweak it with this option.
- the variable si_band in _sigpoll is used to send the reason of the vfs =
signal,
(one of the defined flags in fcntl.h)

Give it a test,

Cheers,

Rene Janssen

/*
* vfs.c test program for VFS fasync feature
*/

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#include <linux/fcntl.h>
#include <linux/fs.h>

const char *name;
static int stop;

void sigio(int sig,siginfo_t *info,void *p)
{
=09if (info)
=09 printf("signr : %d, error : %d, code : %d, fd : %d, reason :0x%08x\n=
", =09 =20
info->si_signo,info->si_errno,info->si_code,info->si_fd,info->si_band);
=09else printf("signr : %d\n",sig);=20
}=20

void stopit(int sig) {
=09stop =3D 1;
}
int main(int argc, char *argv[])
{
=09int err,fh =3D -1;
=09unsigned int mask;
=09struct sigaction sa;

=09name =3D argv[1];
=09
=09fh =3D open(name,O_RDONLY);
=09if (!fh) {=20
=09=09perror("open");
=09=09exit(1);
=09}
=09
=09sigemptyset(&sa.sa_mask);
=09sa.sa_sigaction =3D &sigio;
=09sa.sa_flags =3D SA_SIGINFO;
=09sigaction(33,&sa,NULL);

=09sigemptyset(&sa.sa_mask);
=09sa.sa_handler =3D &stopit;
=09sa.sa_flags =3D 0;
=09sigaction(SIGINT,&sa,NULL);
=09
=09err =3D fcntl(fh,F_SETOWN,getpid());
=09if (err) {
=09=09perror("fcntl");
=09=09exit(1);
=09}
=09err =3D fcntl(fh,F_SETFL,FASYNC);
=09if (err) {
=09=09perror("fcntl");
=09=09exit(1);
=09}
=09err =3D fcntl(fh,F_SETSIG,33);

//=09mask =3D F_ATTR_MTIME | F_ATTR_ATIME | F_ATTR_CTIME;
//=09mask =3D F_ATTR_UID | F_ATTR_GID;
//=09mask =3D F_ATTR_MODE;
=09mask =3D F_MKDIR | F_RMDIR | F_CREATE | F_RENAME | F_SYMLINK;
//=09mask =3D F_ATTR_ATIME;
//=09mask =3D F_UNLINK;
//=09mask =3D F_SYMLINK;
=09
=09err =3D fcntl(fh,F_SETSIGMASK,mask);
=09if (err) {
=09=09perror("fcntl");
=09=09exit(1);
=09}
=09
=09do sleep(~0);
=09while (!stop);
=09printf("exiting\n");
=09
=09exit(0);
}

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: application/x-gzip;
name="vfs_fasync-patch-120.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="vfs_fasync-patch-120.gz"

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

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/faq.html