root/tools/testing/selftests/filesystems/dnotify_test.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. handler
  2. main

   1 // SPDX-License-Identifier: GPL-2.0
   2 #define _GNU_SOURCE     /* needed to get the defines */
   3 #include <fcntl.h>      /* in glibc 2.2 this has the needed
   4                                    values defined */
   5 #include <signal.h>
   6 #include <stdio.h>
   7 #include <unistd.h>
   8 
   9 static volatile int event_fd;
  10 
  11 static void handler(int sig, siginfo_t *si, void *data)
  12 {
  13         event_fd = si->si_fd;
  14 }
  15 
  16 int main(void)
  17 {
  18         struct sigaction act;
  19         int fd;
  20 
  21         act.sa_sigaction = handler;
  22         sigemptyset(&act.sa_mask);
  23         act.sa_flags = SA_SIGINFO;
  24         sigaction(SIGRTMIN + 1, &act, NULL);
  25 
  26         fd = open(".", O_RDONLY);
  27         fcntl(fd, F_SETSIG, SIGRTMIN + 1);
  28         fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT);
  29         /* we will now be notified if any of the files
  30            in "." is modified or new files are created */
  31         while (1) {
  32                 pause();
  33                 printf("Got event on fd=%d\n", event_fd);
  34         }
  35 }

/* [<][>][^][v][top][bottom][index][help] */