/[scripts]/trunk/uncache.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/uncache.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 142 - (hide annotations)
Sun Dec 26 13:44:02 2010 UTC (13 years, 3 months ago) by dpavlin
File MIME type: text/plain
File size: 762 byte(s)
http://bazaar.launchpad.net/%7Edomas-mituzas/%2Bjunk/uncache/download/head%3A/uncache.c-20090626103028-ehcytih27ou9g5gx-1/uncache.c
1 dpavlin 142 /* This program removes specified (or current) directory/file from Linux filesystem cache */
2     #define _GNU_SOURCE
3     #define _XOPEN_SOURCE 600
4    
5     #include <unistd.h>
6     #include <stdlib.h>
7     #include <string.h>
8     #include <stdio.h>
9     #include <fts.h>
10     #include <fcntl.h>
11    
12     int main(int ac, char ** av) {
13     FTS * tree;
14     FTSENT * node;
15    
16     char **paths = malloc(ac*sizeof(char*));
17     memcpy(paths,av+1,(ac-1)*sizeof(char*));
18     paths[ac]=NULL;
19     if (ac<2) paths[0]=getcwd(NULL,0);
20    
21     tree=fts_open(paths,FTS_LOGICAL|FTS_NOCHDIR,NULL);
22     while((node=fts_read(tree))) {
23     int fd;
24     if (node->fts_info != FTS_F) continue;
25     fd=open(node->fts_path,O_DIRECT);
26     posix_fadvise(fd,0,0,POSIX_FADV_DONTNEED);
27     close(fd);
28     }
29     fts_close(tree);
30     if (ac<2) free(paths[0]);
31     free(paths);
32     return(0);
33     }
34    

  ViewVC Help
Powered by ViewVC 1.1.26