Kernel, libc: Use mode in mkdir()

This commit is contained in:
apio 2022-10-28 17:11:35 +02:00
parent 0115cce750
commit 26b20938de
4 changed files with 6 additions and 5 deletions

View File

@ -54,7 +54,7 @@ void sys_execv(Context* context, const char* pathname, char** argv);
void sys_fcntl(Context* context, int fd, int command, uintptr_t arg);
void sys_mprotect(Context* context, void* address, size_t size, int prot);
void sys_clock(Context* context);
void sys_mkdir(Context* context, const char* filename);
void sys_mkdir(Context* context, const char* filename, mode_t mode);
void sys_fork(Context* context);
void sys_waitpid(Context* context, long pid, int* wstatus, int options);
void sys_access(Context* context, const char* path, int amode);

View File

@ -195,7 +195,7 @@ VFS::Node* initrd_read_dir(VFS::Node* node, long offset)
return dir.files[offset];
}
int initrd_mkdir(VFS::Node* node, const char* name) // FIXME: Return proper error numbers.
int initrd_mkdir(VFS::Node* node, const char* name, mode_t mode) // FIXME: Return proper error numbers.
{
if (total_dirs >= 32)
{
@ -225,6 +225,7 @@ int initrd_mkdir(VFS::Node* node, const char* name) // FIXME: Return proper erro
new_node.mkdir_func = initrd_mkdir;
new_node.length = 0;
new_node.type = VFS_DIRECTORY;
new_node.mode = mode;
new_node.uid = new_node.gid = 0;
strncpy(new_node.name, name, sizeof(new_node.name));
InitRD::Directory dir;

View File

@ -27,7 +27,7 @@ void Syscall::entry(Context* context)
case SYS_fcntl: sys_fcntl(context, (int)context->rdi, (int)context->rsi, context->rdx); break;
case SYS_mprotect: sys_mprotect(context, (void*)context->rdi, context->rsi, (int)context->rdx); break;
case SYS_clock: sys_clock(context); break;
case SYS_mkdir: sys_mkdir(context, (const char*)context->rdi); break;
case SYS_mkdir: sys_mkdir(context, (const char*)context->rdi, (mode_t)context->rsi); break;
case SYS_fork: sys_fork(context); break;
case SYS_waitpid: sys_waitpid(context, (long)context->rdi, (int*)context->rsi, (int)context->rdx); break;
case SYS_access: sys_access(context, (const char*)context->rdi, (int)context->rsi); break;

View File

@ -4,9 +4,9 @@
extern "C"
{
int mkdir(const char* pathname, mode_t)
int mkdir(const char* pathname, mode_t mode)
{
return (int)__lc_fast_syscall1(SYS_mkdir, pathname);
return (int)__lc_fast_syscall2(SYS_mkdir, pathname, mode);
}
int fstat(int fd, struct stat* buf)