From owner-freebsd-hackers@FreeBSD.ORG Mon Mar 5 18:03:55 2012 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8FFF41065674 for ; Mon, 5 Mar 2012 18:03:55 +0000 (UTC) (envelope-from sem@semmy.ru) Received: from sunner.semmy.ru (sunner.semmy.ru [IPv6:2a00:14d0:0:20::3]) by mx1.freebsd.org (Postfix) with ESMTP id 20EDC8FC0C for ; Mon, 5 Mar 2012 18:03:55 +0000 (UTC) Received: from dhcp170-40-red.yandex.net ([95.108.170.40]) by sunner.semmy.ru with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.77 (FreeBSD)) (envelope-from ) id 1S4cGI-0004Hv-9Y for freebsd-hackers@freebsd.org; Mon, 05 Mar 2012 22:03:54 +0400 Message-ID: <4F550009.7090600@semmy.ru> Date: Mon, 05 Mar 2012 22:03:53 +0400 From: Sergey Matveychuk User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Mon, 05 Mar 2012 20:01:01 +0000 Subject: watching for a directory with kqueue X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Mar 2012 18:03:55 -0000 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?