/* * Copyright (C) Ingo Molnar, 2002 */ #include #include #include #include #include #include #include #include #include #include #include #include #define __NR_sys_mark_dir_clean 274 _syscall1(int, sys_mark_dir_clean, int, fd); #define O_DIRECTORY 0200000 /* must be a directory */ #define O_CLEAN 01000000 /* parent dir must be clean */ int main(int argc, char **argv) { int fd, fd2, clean; fd = open(".", O_RDONLY | O_DIRECTORY); if (fd <= 0) { perror("fd:"); exit(-1); } for (;;) { clean = sys_mark_dir_clean(fd); printf("clean:%d ", clean); fflush(stdout); sleep(1); fd2 = open("./1", O_CREAT|O_TRUNC|O_CLEAN, 0777); close(fd2); printf("fd:%d\n", fd2); sleep(1); } return 0; }