1 /*- 2 * Copyright (c) 2003 Kip Macy All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 */ 25 26 #ifndef _SYS_CKPT_H_ 27 #define _SYS_CKPT_H_ 28 29 #if !defined(_KERNEL) && !defined(_KERNEL_STRUCTURES) 30 #error "This file should not be included by userland programs." 31 #endif 32 33 #ifndef _SYS_TYPES_H_ 34 #include <sys/types.h> 35 #endif 36 #ifndef _SYS_MOUNT_H_ 37 #include <sys/mount.h> 38 #endif 39 #ifndef _SYS_PROC_H_ 40 #include <sys/proc.h> 41 #endif 42 #ifndef _SYS_SIGNALVAR_H_ 43 #include <sys/signalvar.h> 44 #endif 45 46 #define CKPT_MAXTHREADS 256 47 48 struct ckpt_filehdr { 49 int cfh_magic; /* XXX implement */ 50 int cfh_nfiles; 51 int cfh_reserved[8]; 52 }; 53 54 struct ckpt_vminfo { 55 segsz_t cvm_dsize; /* in pages */ 56 segsz_t cvm_tsize; /* in pages */ 57 segsz_t cvm_reserved1[4]; 58 caddr_t cvm_daddr; 59 caddr_t cvm_taddr; 60 caddr_t cvm_reserved2[4]; 61 }; 62 63 struct ckpt_fileinfo { 64 int cfi_index; 65 u_int cfi_flags; /* saved f_flag */ 66 off_t cfi_offset; /* saved f_offset */ 67 fhandle_t cfi_fh; 68 int cfi_type; 69 int cfi_ckflags; 70 int cfi_reserved[6]; 71 }; 72 73 #define CKFIF_ISCKPTFD 0x0001 74 75 struct ckpt_siginfo { 76 int csi_ckptpisz; 77 struct sigacts csi_sigacts; 78 struct itimerval csi_itimerval; 79 int csi_sigparent; 80 sigset_t csi_sigmask; 81 int csi_reserved[6]; 82 }; 83 84 /* 85 * Elf_Phdr is based on the inclusion of elf32 or elf64. If neither was 86 * included, we don't know what to do with it. If the source needs the 87 * structure, generate a compile-time error. 88 */ 89 #ifdef __ELF_WORD_SIZE 90 91 struct vn_hdr { 92 fhandle_t vnh_fh; 93 Elf_Phdr vnh_phdr; 94 int vnh_reserved[8]; 95 }; 96 97 #endif 98 99 #ifdef _KERNEL 100 #ifdef DEBUG 101 #define TRACE_ENTER kprintf("entering %s at %s:%d\n", __func__, __FILE__, __LINE__) 102 #define TRACE_EXIT kprintf("exiting %s at %s:%d\n", __func__, __FILE__, __LINE__) 103 #define TRACE_ERR kprintf("failure encountered in %s at %s:%d\n", __func__, __FILE__, __LINE__) 104 #define PRINTF(args) kprintf args 105 #else 106 #define TRACE_ENTER 107 #define TRACE_EXIT 108 #define TRACE_ERR 109 #define PRINTF(args) 110 #endif /* DEBUG */ 111 #endif /* _KERNEL */ 112 113 #endif /* _SYS_CKPT_H_ */ 114