• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Ltrace Test : count-record.c.
2    Objectives  : Verify that Ltrace can count all the system calls in
3    execution and report a summary on exit.
4 
5    This file was written by Yao Qi <qiyao@cn.ibm.com>.  */
6 
7 #include <stdio.h>
8 #include <unistd.h>
9 #include <sys/syscall.h>
10 #include <sys/stat.h>
11 #include <errno.h>
12 
13 void exit (int);
14 
15 #define	BUF_SIZE	100
16 
17 /*  Do as many operations as possible to record these calls.  */
18 int
main()19 main ()
20 {
21   FILE* fp;
22   char s[]="system_calls";
23   char buffer[BUF_SIZE];
24   struct stat state;
25 
26   fp = fopen ("system_calls.tmp", "w");
27   if (fp == NULL)
28     {
29       printf("Can not create system_calls.tmp\n");
30       exit (0);
31     }
32 
33   fwrite(s, sizeof(s), 1, fp);
34   fseek (fp, 0, SEEK_CUR);
35   fread(buffer, sizeof(s), 1, fp);
36   fclose(fp);
37 
38   getcwd (buffer, BUF_SIZE);
39   chdir (".");
40   symlink ("system_calls.tmp", "system_calls.link");
41   remove("system_calls.link");
42   rename ("system_calls.tmp", "system_calls.tmp1");
43   stat ("system_calls.tmp", &state);
44   access ("system_calls.tmp", R_OK);
45   remove("system_calls.tmp1");
46 
47   mkdir ("system_call_mkdir", 0777);
48   rmdir ("system_call_mkdir");
49 
50   return 0;
51 }
52