Branch data Line data Source code
1 : : #include <stdio.h>
2 : : #include <stdlib.h>
3 : : #include <stdarg.h>
4 : : #include <signal.h>
5 : : #include <limits.h>
6 : : #include <unistd.h>
7 : : #include <errno.h>
8 : : #include <string.h>
9 : :
10 : : #include <sys/types.h>
11 : :
12 : : #include "types.h"
13 : : #include "file-ids.h"
14 : : #include "rbtree.h"
15 : : #include "kcmp-ids.h"
16 : : #include "compiler.h"
17 : : #include "syscall.h"
18 : : #include "image.h"
19 : : #include "util.h"
20 : :
21 : : static DECLARE_KCMP_TREE(fd_tree, KCMP_FILE);
22 : :
23 : 166 : void fd_id_show_tree(void)
24 : : {
25 : 166 : kid_show_tree(&fd_tree);
26 : 166 : }
27 : :
28 : 4327 : u32 fd_id_generate_special(void)
29 : : {
30 : 4327 : return fd_tree.subid++;
31 : : }
32 : :
33 : 1505 : int fd_id_generate(pid_t pid, FdinfoEntry *fe)
34 : : {
35 : : u32 id;
36 : : struct kid_elem e;
37 : 1505 : int new_id = 0;
38 : :
39 : 1505 : e.pid = pid;
40 : 1505 : e.genid = fe->id;
41 : 1505 : e.idx = fe->fd;
42 : :
43 : 1505 : id = kid_generate_gen(&fd_tree, &e, &new_id);
44 [ + - ]: 1505 : if (!id)
45 : : return -ENOMEM;
46 : :
47 : 1505 : fe->id = id;
48 : 1505 : return new_id;
49 : : }
|