Compare commits

..

No commits in common. "9b0f6b65957aa5969368e151556a994f8161995a" and "a3c6635f3ea114095a921d97b0410c843c4cab3b" have entirely different histories.

7 changed files with 8 additions and 35 deletions

View File

@ -1,7 +1,6 @@
#pragma once #pragma once
#include "interrupts/Context.h" #include "interrupts/Context.h"
#include <stddef.h> #include <stddef.h>
#include <sys/types.h>
#define SYS_exit 0 #define SYS_exit 0
#define SYS_yield 1 #define SYS_yield 1
@ -46,7 +45,7 @@ void sys_paint(Context* context, uint64_t x, uint64_t y, uint64_t w, uint64_t h,
void sys_getprocid(Context* context, int field); void sys_getprocid(Context* context, int field);
void sys_mmap(Context* context, void* address, size_t size, int prot); void sys_mmap(Context* context, void* address, size_t size, int prot);
void sys_munmap(Context* context, void* address, size_t size); void sys_munmap(Context* context, void* address, size_t size);
void sys_open(Context* context, const char* filename, int flags, mode_t mode); void sys_open(Context* context, const char* filename, int flags);
void sys_read(Context* context, int fd, size_t size, char* buffer); void sys_read(Context* context, int fd, size_t size, char* buffer);
void sys_close(Context* context, int fd); void sys_close(Context* context, int fd);
void sys_seek(Context* context, int fd, long offset, int whence); void sys_seek(Context* context, int fd, long offset, int whence);

View File

@ -19,7 +19,7 @@ void Syscall::entry(Context* context)
case SYS_getprocid: sys_getprocid(context, (int)context->rdi); break; case SYS_getprocid: sys_getprocid(context, (int)context->rdi); break;
case SYS_mmap: sys_mmap(context, (void*)context->rdi, context->rsi, (int)context->rdx); break; case SYS_mmap: sys_mmap(context, (void*)context->rdi, context->rsi, (int)context->rdx); break;
case SYS_munmap: sys_munmap(context, (void*)context->rdi, context->rsi); break; case SYS_munmap: sys_munmap(context, (void*)context->rdi, context->rsi); break;
case SYS_open: sys_open(context, (const char*)context->rdi, (int)context->rsi, (mode_t)context->rdx); break; case SYS_open: sys_open(context, (const char*)context->rdi, (int)context->rsi); break;
case SYS_read: sys_read(context, (int)context->rdi, context->rsi, (char*)context->rdx); break; case SYS_read: sys_read(context, (int)context->rdi, context->rsi, (char*)context->rdx); break;
case SYS_close: sys_close(context, (int)context->rdi); break; case SYS_close: sys_close(context, (int)context->rdi); break;
case SYS_seek: sys_seek(context, (int)context->rdi, (long)context->rsi, (int)context->rdx); break; case SYS_seek: sys_seek(context, (int)context->rdi, (long)context->rsi, (int)context->rdx); break;

View File

@ -11,7 +11,6 @@
#include "sys/UserMemory.h" #include "sys/UserMemory.h"
#include "thread/Scheduler.h" #include "thread/Scheduler.h"
#include "thread/Task.h" #include "thread/Task.h"
#include <sys/types.h>
#define OPEN_READ 1 #define OPEN_READ 1
#define OPEN_WRITE 2 #define OPEN_WRITE 2
@ -21,7 +20,6 @@
#define OPEN_TRUNCATED 32 #define OPEN_TRUNCATED 32
#define OPEN_CREATE 64 #define OPEN_CREATE 64
#define OPEN_APPEND 128 #define OPEN_APPEND 128
#define OPEN_EXCL 256
#define SEEK_SET 0 #define SEEK_SET 0
#define SEEK_CUR 1 #define SEEK_CUR 1
@ -139,7 +137,7 @@ void sys_write(Context* context, int fd, size_t size, const char* addr)
return; return;
} }
void sys_open(Context* context, const char* filename, int flags, mode_t) // FIXME: mode is not used. void sys_open(Context* context, const char* filename, int flags)
{ {
Task* current_task = Scheduler::current_task(); Task* current_task = Scheduler::current_task();
int fd = current_task->alloc_fd(); int fd = current_task->alloc_fd();
@ -165,17 +163,6 @@ void sys_open(Context* context, const char* filename, int flags, mode_t) // FIXM
context->rax = -ENOENT; context->rax = -ENOENT;
return; return;
} }
else
{
bool excl = (flags & OPEN_EXCL) > 0;
if (excl)
{
kfree(kfilename);
context->rax = -EEXIST;
return;
}
}
bool can_read = (flags & OPEN_READ) > 0; bool can_read = (flags & OPEN_READ) > 0;
bool can_write = (flags & OPEN_WRITE) > 0; bool can_write = (flags & OPEN_WRITE) > 0;

View File

@ -19,8 +19,6 @@
#define O_CREAT 64 #define O_CREAT 64
/* Open the file for appending. */ /* Open the file for appending. */
#define O_APPEND 128 #define O_APPEND 128
/* Fail to open the file if it already exists. */
#define O_EXCL 256
/* Duplicate a file descriptor. */ /* Duplicate a file descriptor. */
#define F_DUPFD 0 #define F_DUPFD 0
@ -33,7 +31,7 @@ extern "C"
#endif #endif
/* Opens the file specified by pathname. Returns a file descriptor on success, or -1 on error. */ /* Opens the file specified by pathname. Returns a file descriptor on success, or -1 on error. */
int open(const char* pathname, int flags, ...); int open(const char* pathname, int flags);
/* Performs an operation on the file descriptor fd determined by cmd. */ /* Performs an operation on the file descriptor fd determined by cmd. */
int fcntl(int fd, int cmd, ...); int fcntl(int fd, int cmd, ...);

View File

@ -21,13 +21,6 @@ struct tm
const char* tm_zone; const char* tm_zone;
}; };
// Captures elapsed time.
struct timeval
{
time_t tv_sec;
unsigned long tv_usec;
};
#define CLOCKS_PER_SEC 1000 // Number of clock_t per second. #define CLOCKS_PER_SEC 1000 // Number of clock_t per second.
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -6,13 +6,9 @@
extern "C" extern "C"
{ {
int open(const char* pathname, int flags, ...) int open(const char* pathname, int flags)
{ {
va_list ap; return (int)syscall(SYS_open, pathname, flags);
va_start(ap, flags);
long result = syscall(SYS_open, pathname, flags, va_arg(ap, unsigned int));
va_end(ap);
return (int)result;
} }
int fcntl(int fd, int cmd, ...) int fcntl(int fd, int cmd, ...)

View File

@ -26,13 +26,13 @@ extern "C" long syscall(long number, ...)
case SYS_fstat: case SYS_fstat:
case SYS_stat: case SYS_stat:
case SYS_dup2: case SYS_dup2:
case SYS_pstat: { case SYS_pstat:
case SYS_open: {
arg arg0 = va_arg(ap, arg); arg arg0 = va_arg(ap, arg);
arg arg1 = va_arg(ap, arg); arg arg1 = va_arg(ap, arg);
result = __luna_syscall2(number, arg0, arg1); result = __luna_syscall2(number, arg0, arg1);
break; break;
} }
case SYS_open:
case SYS_getdents: case SYS_getdents:
case SYS_fcntl: case SYS_fcntl:
case SYS_seek: case SYS_seek: