Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Mar 2012 22:03:53 +0400
From:      Sergey Matveychuk <sem@semmy.ru>
To:        freebsd-hackers@freebsd.org
Subject:   watching for a directory with kqueue
Message-ID:  <4F550009.7090600@semmy.ru>

next in thread | raw e-mail | index | archive | help
Hi.

I've met a problem with the subj. Could you help?

I'm watching for a directory:
     EV_SET(kq_change_list, fd, EVFILT_VNODE,
             EV_ADD | EV_ENABLE | EV_ONESHOT,
             NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB,
             0, 0);

When the directory changed, I read its contens with opendir, like that:
struct kq_event kq_event[1000];
...
while(1) {
         n = kevent(kq, kq_change_list, chlist_used, kq_event, 1000, NULL);
	for(i = 0; i < n; i++) {
		if(kq_event[i].fflags & NOTE_EXTEND || kq_event[i].fflags & NOTE_WRITE) {
			opendir(.....)

It works when I create a few files (1-3), but when I create 10 files 
with touch(1) I see only 3-6 files with opendir. I've got only one event 
with kevent() (n=1). Looks like I should got a few events, but I did 
not. Could you give an advice how to get all created files?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F550009.7090600>