cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dnotify_test.c (808B)


      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
      9static volatile int event_fd;
     10
     11static void handler(int sig, siginfo_t *si, void *data)
     12{
     13	event_fd = si->si_fd;
     14}
     15
     16int 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}