kboot: Implement mount(2)
Create a wrapper for the mount system call. To ensure a sane early boot environment and to gather data we need for kexec, we may need to mount some special filesystems. Sponsored by: Netflix
This commit is contained in:
parent
a99d47bcaa
commit
8138a766b0
@ -7,6 +7,7 @@
|
|||||||
#define SYS_lseek 8
|
#define SYS_lseek 8
|
||||||
#define SYS_mkdirat 258
|
#define SYS_mkdirat 258
|
||||||
#define SYS_mmap 9
|
#define SYS_mmap 9
|
||||||
|
#define SYS_mount 165
|
||||||
#define SYS_munmap 11
|
#define SYS_munmap 11
|
||||||
#define SYS_newfstat 5
|
#define SYS_newfstat 5
|
||||||
#define SYS_newfstatat 262
|
#define SYS_newfstatat 262
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#define SYS_llseek 140
|
#define SYS_llseek 140
|
||||||
#define SYS_mkdirat 287
|
#define SYS_mkdirat 287
|
||||||
#define SYS_mmap 90
|
#define SYS_mmap 90
|
||||||
|
#define SYS_mount 21
|
||||||
#define SYS_munmap 91
|
#define SYS_munmap 91
|
||||||
#define SYS_newfstat SYS_fstat
|
#define SYS_newfstat SYS_fstat
|
||||||
#define SYS_newfstatat 291
|
#define SYS_newfstatat 291
|
||||||
|
@ -88,6 +88,9 @@ struct host_timeval {
|
|||||||
|
|
||||||
#define HOST_AT_FDCWD -100 /* Relative to current directory */
|
#define HOST_AT_FDCWD -100 /* Relative to current directory */
|
||||||
|
|
||||||
|
/* Mount flags from uapi */
|
||||||
|
#define MS_RELATIME (1 << 21)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* System Calls
|
* System Calls
|
||||||
*/
|
*/
|
||||||
@ -101,6 +104,8 @@ int host_kexec_load(uint32_t start, int nsegs, uint32_t segs, uint32_t flags);
|
|||||||
ssize_t host_llseek(int fd, int32_t offset_high, int32_t offset_lo, uint64_t *result, int whence);
|
ssize_t host_llseek(int fd, int32_t offset_high, int32_t offset_lo, uint64_t *result, int whence);
|
||||||
int host_mkdir(const char *, host_mode_t);
|
int host_mkdir(const char *, host_mode_t);
|
||||||
void *host_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off);
|
void *host_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off);
|
||||||
|
int host_mount(const char *src, const char *target, const char *type,
|
||||||
|
unsigned long flags, void *data);
|
||||||
int host_munmap(void *addr, size_t len);
|
int host_munmap(void *addr, size_t len);
|
||||||
int host_open(const char *path, int flags, int mode);
|
int host_open(const char *path, int flags, int mode);
|
||||||
ssize_t host_read(int fd, void *buf, size_t nbyte);
|
ssize_t host_read(int fd, void *buf, size_t nbyte);
|
||||||
|
@ -75,6 +75,13 @@ host_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off)
|
|||||||
return (void *)host_syscall(SYS_mmap, (uintptr_t)addr, len, prot, flags, fd, off);
|
return (void *)host_syscall(SYS_mmap, (uintptr_t)addr, len, prot, flags, fd, off);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
host_mount(const char *src, const char *target, const char *type, unsigned long flags,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
return host_syscall(SYS_mount, src, target, type, flags, data);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
host_munmap(void *addr, size_t len)
|
host_munmap(void *addr, size_t len)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user