Clean up RCS ids
[projects/cmucl/cmucl.git] / src / lisp / os.h
CommitLineData
62957726 1/*
62957726 2 * Common interface for os-dependent functions.
3 *
4 */
5
e67c0397 6#ifndef _OS_H_
7#define _OS_H_
62957726 8
9#include "lisp.h"
10
0a3b5441 11#define DPRINTF(t,a) { if (t) fprintf a; }
12
eb44537a 13#ifdef DARWIN
14#include "Darwin-os.h"
15#else
62957726 16#ifdef MACH
17#include "mach-os.h"
18#else
19#ifdef sun
20#include "sunos-os.h"
28d03d3d 21#else
22#ifdef hpux
23#include "hpux-os.h"
6f4a04e5 24#else
25#ifdef osf1
26#include "osf1-os.h"
cdac17ab 27#else
28#ifdef irix
29#include "irix-os.h"
5ced0fdf 30#else
31#ifdef __FreeBSD__
32#include "FreeBSD-os.h"
33#else
195461c1 34#ifdef __OpenBSD__
35#include "OpenBSD-os.h"
36#else
4ea11535 37#ifdef __NetBSD__
38#include "NetBSD-os.h"
39#else
5ced0fdf 40#ifdef __linux__
41#include "Linux-os.h"
42#endif
43#endif
cdac17ab 44#endif
6f4a04e5 45#endif
28d03d3d 46#endif
62957726 47#endif
48#endif
195461c1 49#endif
4ea11535 50#endif
eb44537a 51#endif
62957726 52
9a8c1c2f 53#ifndef os_context_t
5d2cd5df 54#define os_context_t struct sigcontext
55#endif
571df509 56#ifndef HANDLER_ARGS
5d2cd5df 57#define HANDLER_ARGS int signal, int code, os_context_t *context
571df509 58#endif
59#ifndef CODE
60#define CODE(code) code
61#endif
571df509 62#ifndef SAVE_CONTEXT
63#define SAVE_CONTEXT() do {} while(0)
64#endif
44eba57f 65#ifndef RESTORE_FPU
66#define RESTORE_FPU(context) do {} while (0)
67#endif
571df509 68
62957726 69#define OS_VM_PROT_ALL (OS_VM_PROT_READ|OS_VM_PROT_WRITE|OS_VM_PROT_EXECUTE)
70
71extern os_vm_size_t os_vm_page_size;
72
dafb9e03 73extern void os_init0(const char *argv[], const char *envp[]);
0f0aed07 74extern void os_init(const char *argv[], const char *envp[]);
62957726 75extern void os_install_interrupt_handlers(void);
76
77extern os_vm_address_t os_allocate(os_vm_size_t len);
78extern os_vm_address_t os_allocate_at(os_vm_address_t addr, os_vm_size_t len);
79extern os_vm_address_t os_reallocate(os_vm_address_t addr,
9a8c1c2f 80 os_vm_size_t old_len, os_vm_size_t len);
62957726 81extern void os_deallocate(os_vm_address_t addr, os_vm_size_t len);
82extern void os_zero(os_vm_address_t addr, os_vm_size_t length);
83
84extern os_vm_address_t os_validate(os_vm_address_t addr, os_vm_size_t len);
85extern void os_invalidate(os_vm_address_t addr, os_vm_size_t len);
86extern os_vm_address_t os_map(int fd, int offset, os_vm_address_t addr,
87 os_vm_size_t len);
88extern void os_flush_icache(os_vm_address_t addr, os_vm_size_t len);
89extern void os_protect(os_vm_address_t addr, os_vm_size_t len,
9a8c1c2f 90
62957726 91 os_vm_prot_t protection);
92extern boolean valid_addr(os_vm_address_t test);
93
94#define os_trunc_to_page(addr) \
95 (os_vm_address_t)(((long)(addr))&~(os_vm_page_size-1))
96#define os_round_up_to_page(addr) \
97 os_trunc_to_page((addr)+(os_vm_page_size-1))
98
99#define os_trunc_size_to_page(size) \
100 (os_vm_size_t)(((long)(size))&~(os_vm_page_size-1))
101#define os_round_up_size_to_page(size) \
102 os_trunc_size_to_page((size)+(os_vm_page_size-1))
103
bf84be07 104extern void os_foreign_linkage_init(void);
9a8c1c2f 105extern void *os_dlsym(const char *sym_name, lispobj lib_list);
bf84be07 106
9a8c1c2f 107enum stack_zone_t { BOTH_ZONES, YELLOW_ZONE, RED_ZONE };
108extern int os_stack_grows_down(void);
109extern void os_guard_control_stack(int zone, int guard);
110extern int os_control_stack_overflow(void *, os_context_t *);
670d643f 111
9495c516 112unsigned long *os_sigcontext_reg(ucontext_t *, int);
113unsigned long *os_sigcontext_pc(ucontext_t *);
114unsigned char *os_sigcontext_fpu_reg(ucontext_t *, int);
b17a70c7 115unsigned int os_sigcontext_fpu_modes(ucontext_t *);
9495c516 116
68e8e5d1 117char* convert_lisp_string(char* c_string, void* lisp_string, int len);
118
e67c0397 119#endif /* _OS_H_ */