Branch data Line data Source code
1 : : #ifndef __CR_SHMEM_H__
2 : : #define __CR_SHMEM_H__
3 : :
4 : : #include "lock.h"
5 : :
6 : : #include "protobuf/vma.pb-c.h"
7 : :
8 : : /*
9 : : * pid is a pid of a creater
10 : : * start, end are used for open mapping
11 : : * fd is a file discriptor, which is valid for creater,
12 : : * it's opened in cr-restor, because pgoff may be non zero
13 : : */
14 : : struct shmem_info {
15 : : unsigned long shmid;
16 : : unsigned long start;
17 : : unsigned long end;
18 : : unsigned long size;
19 : : int pid;
20 : : int fd;
21 : : futex_t lock;
22 : : };
23 : :
24 : : struct _VmaEntry;
25 : : extern int collect_shmem(int pid, struct _VmaEntry *vi);
26 : : extern int prepare_shmem_restore(void);
27 : : extern void show_saved_shmems(void);
28 : : extern int get_shmem_fd(int pid, VmaEntry *vi);
29 : :
30 : : extern unsigned long nr_shmems;
31 : : extern unsigned int rst_shmems;
32 : :
33 : : extern int cr_dump_shmem(void);
34 : : extern int add_shmem_area(pid_t pid, VmaEntry *vma);
35 : :
36 : : static always_inline struct shmem_info *
37 : : find_shmem(struct shmem_info *shmems, int nr, unsigned long shmid)
38 : : {
39 : : struct shmem_info *si;
40 : : int i;
41 : :
42 [ + + ]: 136 : for (i = 0, si = shmems; i < nr; i++, si++)
43 [ + + ]: 104 : if (si->shmid == shmid)
44 : : return si;
45 : :
46 : : return NULL;
47 : : }
48 : :
49 : : #endif /* __CR_SHMEM_H__ */
|