0,0 → 1,88 |
|
#ifndef __KOS_IO_H__ |
#define __KOS_IO_H__ |
|
#pragma pack(push, 1) |
typedef struct |
{ |
char sec; |
char min; |
char hour; |
char rsv; |
}detime_t; |
|
typedef struct |
{ |
char day; |
char month; |
short year; |
}dedate_t; |
|
typedef struct |
{ |
unsigned attr; |
unsigned flags; |
union |
{ |
detime_t ctime; |
unsigned cr_time; |
}; |
union |
{ |
dedate_t cdate; |
unsigned cr_date; |
}; |
union |
{ |
detime_t atime; |
unsigned acc_time; |
}; |
union |
{ |
dedate_t adate; |
unsigned acc_date; |
}; |
union |
{ |
detime_t mtime; |
unsigned mod_time; |
}; |
union |
{ |
dedate_t mdate; |
unsigned mod_date; |
}; |
unsigned size; |
unsigned size_high; |
} fileinfo_t; |
|
#pragma pack(pop) |
|
int create_file(const char *path); |
int get_fileinfo(const char *path, fileinfo_t *info); |
int read_file(const char *path, void *buff, |
size_t offset, size_t count, size_t *reads); |
int write_file(const char *path,const void *buff, |
size_t offset, size_t count, size_t *writes); |
int set_file_size(const char *path, unsigned size); |
void *load_file(const char *path, size_t *len); |
void __stdcall unpack(void* packed_data, void* unpacked_data); |
|
static inline int user_free(void *mem) |
{ |
int val; |
__asm__ __volatile__( |
"int $0x40" |
:"=eax"(val) |
:"a"(68),"b"(12),"c"(mem)); |
return val; |
} |
|
static inline void set_cwd(const char* cwd) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(30),"b"(1),"c"(cwd)); |
}; |
|
#endif |