cfd3379bb1
* Removed startup code patches in lib/csu regarding kernel to userland ABI. * Aligned stack layout on NetBSD stack layout. * Generate valid stack pointers instead of offsets by taking into account _minix_kerninfo->kinfo->user_sp. * Refactored stack generation, by moving part of execve in two functions {minix_stack_params(), minix_stack_fill()} and using them in execve(), rs and vm. * Changed load offset of rtld (ld.so) to: execi.args.stack_high - execi.args.stack_size - 0xa00000 which is 10MB below the main executable stack. Change-Id: I839daf3de43321cded44105634102d419cb36cec
50 lines
1.6 KiB
C
50 lines
1.6 KiB
C
/* The <lib.h> header is the master header used by the library.
|
|
* All the C files in the lib subdirectories include it.
|
|
*/
|
|
|
|
#ifndef _LIB_H
|
|
#define _LIB_H
|
|
|
|
/* First come the defines. */
|
|
#include <sys/featuretest.h> /* tell headers to include NetBSD stuff. */
|
|
|
|
/* The following are so basic, all the lib files get them automatically. */
|
|
#include <minix/config.h> /* must be first */
|
|
#include <sys/types.h>
|
|
#include <limits.h>
|
|
#include <errno.h>
|
|
|
|
#include <minix/const.h>
|
|
#include <minix/com.h>
|
|
#include <minix/type.h>
|
|
#include <minix/callnr.h>
|
|
|
|
#include <minix/ipc.h>
|
|
|
|
struct ps_strings; /* forward declaration for minix_stack_fill. */
|
|
|
|
void minix_stack_params(const char *path, char * const *argv, char * const *envp,
|
|
size_t *stack_size, char *overflow, int *argc, int *envc);
|
|
void minix_stack_fill(const char *path, int argc, char * const *argv,
|
|
int envc, char * const *envp, size_t stack_size, char *frame,
|
|
int *vsp, struct ps_strings **psp);
|
|
|
|
int __execve(const char *_path, char *const _argv[], char *const
|
|
_envp[], int _nargs, int _nenvps);
|
|
int _syscall(endpoint_t _who, int _syscallnr, message *_msgptr);
|
|
void _loadname(const char *_name, message *_msgptr);
|
|
int _len(const char *_s);
|
|
void _begsig(int _dummy);
|
|
|
|
int getprocnr(void);
|
|
int getnprocnr(pid_t pid);
|
|
int getpprocnr(void);
|
|
int _pm_findproc(char *proc_name, int *proc_nr);
|
|
int mapdriver(char *label, int major, int style, int flags);
|
|
pid_t getnpid(endpoint_t proc_ep);
|
|
uid_t getnuid(endpoint_t proc_ep);
|
|
gid_t getngid(endpoint_t proc_ep);
|
|
ssize_t pread64(int fd, void *buf, size_t count, u64_t where);
|
|
ssize_t pwrite64(int fd, const void *buf, size_t count, u64_t where);
|
|
|
|
#endif /* _LIB_H */
|