e5cc85fdc4
This single function allows copying file descriptors from and to processes, and closing a previously copied remote file descriptor. This function replaces the five FD-related UDS backcalls. While it limits the total number of in-flight file descriptors to OPEN_MAX, this change greatly improves crash recovery support of UDS, since all in-flight file descriptors will be closed instead of keeping them open indefinitely (causing VFS to crash on system shutdown). With the new copyfd call, UDS becomes simpler, and the concept of filps is no longer exposed outside of VFS. This patch also moves the checkperms(2) stub into libminlib, thus fully abstracting away message details of VFS communication from UDS. Change-Id: Idd32ad390a566143c8ef66955e5ae2c221cff966
52 lines
1.7 KiB
C
52 lines
1.7 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);
|
|
int checkperms(endpoint_t endpt, char *path, size_t size);
|
|
int copyfd(endpoint_t endpt, int fd, int what);
|
|
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 */
|