criu/include/shmem.h
Pavel Emelyanov 5f9acc8dc9 shmem: Explicitly initialize rst_shmems
This is a position in the RM_SHREMAP memory. Since shmems are currently
the only user of it, this is validly equals zero, but it will change soon.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2014-08-19 13:00:07 +04:00

49 lines
1 KiB
C

#ifndef __CR_SHMEM_H__
#define __CR_SHMEM_H__
#include "lock.h"
#include "protobuf/vma.pb-c.h"
/*
* pid is a pid of a creater
* start, end are used for open mapping
* fd is a file discriptor, which is valid for creater,
* it's opened in cr-restor, because pgoff may be non zero
*/
struct shmem_info {
unsigned long shmid;
unsigned long start;
unsigned long end;
unsigned long size;
int pid;
int fd;
futex_t lock;
};
struct _VmaEntry;
extern int collect_shmem(int pid, struct _VmaEntry *vi);
extern int prepare_shmem_restore(void);
extern void show_saved_shmems(void);
extern int get_shmem_fd(int pid, VmaEntry *vi);
extern unsigned long nr_shmems;
extern unsigned long rst_shmems;
extern int cr_dump_shmem(void);
extern int add_shmem_area(pid_t pid, VmaEntry *vma);
static always_inline struct shmem_info *
find_shmem(struct shmem_info *shmems, int nr, unsigned long shmid)
{
struct shmem_info *si;
int i;
for (i = 0, si = shmems; i < nr; i++, si++)
if (si->shmid == shmid)
return si;
return NULL;
}
#endif /* __CR_SHMEM_H__ */