5 #include <minix/syslib.h>
6 #include <minix/sysutil.h>
10 #include <st/state_transfer.h>
11 #include <st/special.h>
13 static const char* _magic_generic_debug_header(void)
18 /*===========================================================================*
19 * _magic_dump_eval_bool *
20 *===========================================================================*/
21 void _magic_dump_eval_bool(char *expr
)
23 extern char *sef_lu_state_eval
;
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 /*===========================================================================*
52 *===========================================================================*/
53 int _magic_real_brk(char *newbrk
)
55 return magic_real_brk(newbrk
);
58 /*===========================================================================*
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. */
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
);