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_SIGNALVAR_H_ 40 #include <sys/signalvar.h> 41 #endif 42 43 #define CKPT_MAXTHREADS 256 44 45 struct ckpt_filehdr { 46 int cfh_magic; /* XXX implement */ 47 int cfh_nfiles; 48 int cfh_reserved[8]; 49 }; 50 51 struct ckpt_vminfo { 52 segsz_t cvm_dsize; /* in pages */ 53 segsz_t cvm_tsize; /* in pages */ 54 segsz_t cvm_reserved1[4]; 55 caddr_t cvm_daddr; 56 caddr_t cvm_taddr; 57 caddr_t cvm_reserved2[4]; 58 }; 59 60 struct ckpt_fileinfo { 61 int cfi_index; 62 u_int cfi_flags; /* saved f_flag */ 63 off_t cfi_offset; /* saved f_offset */ 64 fhandle_t cfi_fh; 65 int cfi_type; 66 int cfi_ckflags; 67 int cfi_reserved[6]; 68 }; 69 70 #define CKFIF_ISCKPTFD 0x0001 71 72 struct ckpt_siginfo { 73 int csi_ckptpisz; 74 struct sigacts csi_sigacts; 75 struct itimerval csi_itimerval; 76 int csi_sigparent; 77 sigset_t csi_sigmask; 78 int csi_reserved[6]; 79 }; 80 81 /* 82 * Elf_Phdr is based on the inclusion of elf32 or elf64. If neither was 83 * included, we don't know what to do with it. If the source needs the 84 * structure, generate a compile-time error. 85 */ 86 #ifdef __ELF_WORD_SIZE 87 88 struct vn_hdr { 89 fhandle_t vnh_fh; 90 Elf_Phdr vnh_phdr; 91 int vnh_reserved[8]; 92 }; 93 94 #endif 95 96 #ifdef _KERNEL 97 #ifdef DEBUG 98 #define TRACE_ENTER kprintf("entering %s at %s:%d\n", __func__, __FILE__, __LINE__) 99 #define TRACE_EXIT kprintf("exiting %s at %s:%d\n", __func__, __FILE__, __LINE__) 100 #define TRACE_ERR kprintf("failure encountered in %s at %s:%d\n", __func__, __FILE__, __LINE__) 101 #define PRINTF(args) kprintf args 102 #else 103 #define TRACE_ENTER 104 #define TRACE_EXIT 105 #define TRACE_ERR 106 #define PRINTF(args) 107 #endif /* DEBUG */ 108 #endif /* _KERNEL */ 109 110 #endif /* _SYS_CKPT_H_ */ 111