etc/services - sync with NetBSD-8
[minix.git] / minix / lib / libmagicrt / magic_util.c
blobcae481cd00523e48e6654b7af4654b38e338f60b
1 #include <assert.h>
2 #include <string.h>
3 #include <unistd.h>
4 #include <sys/mman.h>
5 #include <minix/syslib.h>
6 #include <minix/sysutil.h>
8 #include <magic.h>
9 #include <magic_mem.h>
10 #include <st/state_transfer.h>
11 #include <st/special.h>
13 static const char* _magic_generic_debug_header(void)
15 return "[DEBUG]";
18 /*===========================================================================*
19 * _magic_dump_eval_bool *
20 *===========================================================================*/
21 void _magic_dump_eval_bool(char *expr)
23 extern char *sef_lu_state_eval;
24 char result;
25 int print_style;
26 (void)(result);
27 print_style = magic_eval_get_print_style();
28 magic_eval_set_print_style(MAGIC_EVAL_PRINT_STYLE_ALL);
29 magic_eval_bool(sef_lu_state_eval, &result);
30 magic_eval_set_print_style(print_style);
33 /*===========================================================================*
34 * _magic_real_alloc_contig *
35 *===========================================================================*/
36 void *_magic_real_alloc_contig(size_t len, int flags, uint32_t *phys)
38 return magic_real_mmap(NULL, len, PROT_READ|PROT_WRITE,
39 MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
42 /*===========================================================================*
43 * _magic_real_free_contig *
44 *===========================================================================*/
45 int _magic_real_free_contig(void *addr, size_t len)
47 return munmap(addr, len);
50 /*===========================================================================*
51 * _magic_real_brk *
52 *===========================================================================*/
53 int _magic_real_brk(char *newbrk)
55 return magic_real_brk(newbrk);
58 /*===========================================================================*
59 * _magic_real_mmap *
60 *===========================================================================*/
61 void* _magic_real_mmap(void *buf, size_t len, int prot, int flags, int fd, off_t offset)
63 return magic_real_mmap(buf, len, prot, flags, fd, offset);
66 /*===========================================================================*
67 * _magic_real_munmap *
68 *===========================================================================*/
69 int _magic_real_munmap(void *addr, size_t length)
71 return magic_real_munmap(addr, length);
74 /*===========================================================================*
75 * _magic_state_transfer *
76 *===========================================================================*/
77 int _magic_state_transfer(sef_init_info_t *info)
79 st_init_info_t st_info;
80 /* Convert SEF flags into ST flags. */
81 st_info.flags = 0;
82 if (info->flags & SEF_LU_ASR)
83 st_info.flags |= ST_LU_ASR;
84 if (info->flags & SEF_LU_NOMMAP)
85 st_info.flags |= ST_LU_NOMMAP;
86 st_info.init_buff_start = info->init_buff_start;
87 st_info.init_buff_cleanup_start = info->init_buff_cleanup_start;
88 st_info.init_buff_len = info->init_buff_len;
89 /* Transmit sef_init_info opaquely to the state transfer framework. */
90 st_info.info_opaque = (void *) (info);
91 /* Add the OS callbacks. */
92 st_info.st_cbs_os.panic = &(panic); /* panic() callback. */
93 st_info.st_cbs_os.old_state_table_lookup = &(sef_old_state_table_lookup_opaque); /* old_state_table_lookup() callback. */
94 st_info.st_cbs_os.copy_state_region = &(sef_copy_state_region_opaque); /* copy_state_region() callback. */
95 st_info.st_cbs_os.alloc_contig = &(_magic_real_alloc_contig); /* alloc_contig() callback. */
96 st_info.st_cbs_os.free_contig = &(_magic_real_free_contig); /* free_contig() callback. */
97 st_info.st_cbs_os.debug_header = &(_magic_generic_debug_header); /* debug_header() callback. */
98 return st_state_transfer(&st_info);