mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-31 14:25:49 +00:00
09a2afe07ee0de172b13ec105a95d0102fe2bfcf
It seems that the different libc (musl) which Alpine Linux uses produces different errors than the usual glibc. This patch fixes most include errors. Two errors are not yet resolved on Alpine Linux's libc (musl): * proc_parse.c: In function 'parse_posix_timers': proc_parse.c:2125:34: error: 'SIGEV_THREAD_ID' undeclared (first use in this function) timer->spt.it_sigev_notify = SIGEV_THREAD_ID; proc_parse.c:2125:34: note: each undeclared identifier is reported only once for each function it appears in Seems difficult to fix as including <linux/signal.h>, which provides this #define, generates more different error messages related to time.h and linux/time.h collisions. It is not yet clear if additional guards would help in the header files. * fsnotify.c: In function 'open_by_handle': fsnotify.c:107:9: error: implicit declaration of function 'open_by_handle_at' [-Werror=implicit-function-declaration] return open_by_handle_at(fd, arg, O_PATH); The function open_by_handle_at() is not provided by Alpine Linux's libc (musl). This patch resolves the following errors/warnings and has been tested on RHEL7(x86_64/powerpc64le) and Fedora 24: cr-service.c: In function 'cr_service': cr-service.c:1082:26: error: passing argument 2 of 'accept' from incompatible pointer type [-Werror=incompatible-pointer-types] sk = accept(server_fd, &client_addr, &client_addr_len); ^ In file included from /usr/include/fortify/sys/socket.h:20:0, from cr-service.c:11: /usr/include/sys/socket.h:301:5: note: expected 'struct sockaddr * restrict' but argument is of type 'struct sockaddr_un *' int accept (int, struct sockaddr *__restrict, socklen_t *__restrict); ^ cc1: all warnings being treated as errors files.c: In function 'open_transport_fd': files.c:845:19: error: passing argument 2 of 'bind' from incompatible pointer type [-Werror=incompatible-pointer-types] ret = bind(sock, &saddr, sun_len); ^ In file included from /usr/include/fortify/sys/socket.h:20:0, from files.c:12: /usr/include/sys/socket.h:298:5: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_un *' int bind (int, const struct sockaddr *, socklen_t); ^ cc1: all warnings being treated as errors In file included from fsnotify.c:18:0: /usr/include/sys/poll.h:1:2: error: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Werror=cpp] #warning redirecting incorrect #include <sys/poll.h> to <poll.h> ^ cc1: all warnings being treated as errors In file included from /root/criu/criu/include/timerfd.h:7:0, from /root/criu/criu/include/restorer.h:18, from arch/x86/crtools.c:16: /root/criu/criu/include/files.h:43:14: error: field 'stat' has incomplete type struct stat stat; In file included from arch/x86/vdso-pie.c:6:0: /root/criu/criu/include/syscall.h:22:66: error: unknown type name 'loff_t' extern long sys_pread (unsigned int fd, char *buf, size_t count, loff_t pos) ; ^ /root/criu/criu/include/syscall.h:83:31: error: unknown type name 'clockid_t' extern long sys_timer_create (clockid_t which_clock, struct sigevent *timer_event_spec, kernel_timer_t *created_timer_id ^ /root/criu/criu/include/syscall.h:88:38: error: unknown type name 'clockid_t' extern long sys_clock_gettime (const clockid_t which_clock, const struct timespec *tp) ; ^ In file included from netfilter.c:5:0: /usr/include/wait.h:1:2: error: #warning redirecting incorrect #include <wait.h> to <sys/wait.h> [-Werror=cpp] #warning redirecting incorrect #include <wait.h> to <sys/wait.h> ^ cc1: all warnings being treated as errors pie/restorer.c: In function '__export_restore_task': pie/restorer.c:1276:23: error: 'LOCK_EX' undeclared (first use in this function) ret = sys_flock(fd, LOCK_EX); ^ pie/restorer.c:1276:23: note: each undeclared identifier is reported only once for each function it appears in pie/restorer.c:1310:23: error: 'LOCK_UN' undeclared (first use in this function) ret = sys_flock(fd, LOCK_UN); ^ sk-unix.c: In function 'open_unixsk_standalone': sk-unix.c:1169:19: error: passing argument 2 of 'connect' from incompatible pointer type [-Werror=incompatible-pointer-types] if (connect(sk, &addr, sizeof(addr.sun_family))) { ^ In file included from /usr/include/fortify/sys/socket.h:20:0, from sk-unix.c:1: /usr/include/sys/socket.h:299:5: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_un *' int connect (int, const struct sockaddr *, socklen_t); ^ cc1: all warnings being treated as errors c/criu.c: In function 'criu_local_set_parent_images': c/criu.c:169:26: error: implicit declaration of function 'strdup' [-Werror=implicit-function-declaration] opts->rpc->parent_img = strdup(path); Signed-off-by: Adrian Reber <areber@redhat.com> Signed-off-by: Andrew Vagin <avagin@virtuozzo.com> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
CRIU (Checkpoint and Restore in Userspace)
An utility to checkpoint/restore tasks. Using this tool, you can freeze a running application (or part of it) and checkpoint it to a hard drive as a collection of files. You can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space.
The project home is at http://criu.org.
Pages worth starting with are:
- Kernel configuration, compilation, etc
- A simple example of usage
- More sophisticated example with graphical app
A video tour on basic CRIU features
How to contribute
- How to submit patches;
- Send all bug reports to mailing list;
- Spread the word about CRIU in social networks;
Description
Languages
C
86%
Python
6.1%
Java
2.6%
Shell
2.6%
Makefile
2%
Other
0.7%