reassign 272683 kernel-image-2.6.8-sparc retittle 272683 dnotify doesn't work correctly on sparc64 with 32 bit programs thanks,
Hi, It seems that dnotify doesn't work correctly on sparc64 for 32 bit programs. Causing filemonitoring libraries/programs like fam and gamin to fail Attached is a little testprogram, which is just the example given in the kernel source with some extra debug info. When compiled as a 32bit program and changing something in the current dir (which is being watched): $ ./test Opened current dir as fd: 3 Got event on fd=0 Which is incorrect as it should have indicated that something changed at fd 3.. When compiled as a 64bit program it works fine: $ ./test64 Opened current dir as fd: 3 Got event on fd=3 Sjoerd -- "Our vision is to speed up time, eventually eliminating it." -- Alex Schure
#define _GNU_SOURCE /* needed to get the defines */ #include <fcntl.h> /* in glibc 2.2 this has the needed values defined */ #include <signal.h> #include <stdio.h> #include <unistd.h> static volatile int event_fd; static void handler(int sig, siginfo_t *si, void *data) { event_fd = si->si_fd; } int main(void) { struct sigaction act; int fd; act.sa_sigaction = handler; sigemptyset(&act.sa_mask); act.sa_flags = SA_SIGINFO; sigaction(SIGRTMIN + 1, &act, NULL); fd = open(".", O_RDONLY); printf("Opened current dir as fd: %d\n", fd); fcntl(fd, F_SETSIG, SIGRTMIN + 1); fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT); /* we will now be notified if any of the files in "." is modified or new files are created */ while (1) { pause(); printf("Got event on fd=%d\n", event_fd); } }