Date: Wed, 02 May 2001 21:24:42 -0000 From: "Dominic Marks" <dominic_marks@hotmail.com> To: freebsd-hackers@freebsd.org Subject: KEvent doesnt return and KEvent sample troubles Message-ID: <F45sAitVGeSJIEoPXCF00000265@hotmail.com>
next in thread | raw e-mail | index | archive | help
I've been looking to start using the KEvent system and I've been experimenting with it. However I've been having several problems, with my own code as well as samples from http://www.flugsvamp.org. It appears I am able to create the correct structure's and register the events. However the event never returns and never responds to any action. For example if I use a sample which monitors the actions on a file I can read from, and write to the file and it shows no sign of noticing. I was wondering if it's simply a mistake of my own, however the failure for the samples I've found has puzzled my further. I'm working on a 4.3-STABLE machine using GCC version 2.95.3. Here is an example of code that I am using which doesn't seem to catch any events. Its a slightly modified version of read_test.c from flugsvamp.com which I edit so it would compile happily. It doesn't seem to work however. > #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <aio.h> #include <sys/errno.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/event.h> #include <sys/time.h> #include <sys/syscall.h> main(int argc, char **argv) { int fd, kq, n; struct kevent event[1]; struct kevent *evp[1]; char buffer[128]; struct stat st; struct aiocb iocb; struct timespec ts = {0, 0}; if (argc != 2) errx(1, "Usage: %s file\n", argv[0]); fd = open(argv[1], O_RDONLY); if (fd < 0) err(1, "open: %s\n", argv[1]); lseek(fd, 0, SEEK_END); kq = syscall(SYS_kqueue); if (kq < 0) err(1, "kqueue"); event[0].ident = fd; event[0].filter = EVFILT_READ; event[0].flags = EV_ADD | EV_ENABLE; evp[0] = &event[0]; n = syscall(SYS_kevent, kq, 1, evp, 0, NULL, 0); for (;;) { n = syscall(SYS_kevent, kq, 0, NULL, 1, event, ts); if (n < 0) err(1, "kevent"); printf("kevent flags: 0x%x, data: 0x%x\n", event[0].flags, event[0].data); n = read(fd, buffer, 128); buffer[n] = '\0'; printf("%s", buffer); } } < I'd appreciate any feedback very much. Thank you Dominic Marks _________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F45sAitVGeSJIEoPXCF00000265>