forked from KolibriOS/kolibrios
ddk:
- Fixed Makefile - Added FS_Service instead of calling system call 70 git-svn-id: svn://kolibrios.org@9057 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
36c4b6f145
commit
be90c91c89
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
CC = gcc
|
CC = kos32-gcc
|
||||||
AS = as
|
AS = kos32-as
|
||||||
|
LD = kos32-ld
|
||||||
|
|
||||||
DRV_TOPDIR = $(CURDIR)/..
|
DRV_TOPDIR = $(CURDIR)/..
|
||||||
DRV_INCLUDES = $(DRV_TOPDIR)/include
|
DRV_INCLUDES = $(DRV_TOPDIR)/include
|
||||||
|
@ -83,6 +83,8 @@
|
|||||||
.global _WaitEvent
|
.global _WaitEvent
|
||||||
.global _WaitEventTimeout
|
.global _WaitEventTimeout
|
||||||
|
|
||||||
|
.global _FS_Service
|
||||||
|
|
||||||
.def _AcpiGetRootPtr; .scl 2; .type 32; .endef
|
.def _AcpiGetRootPtr; .scl 2; .type 32; .endef
|
||||||
|
|
||||||
.def _AllocKernelSpace; .scl 2; .type 32; .endef
|
.def _AllocKernelSpace; .scl 2; .type 32; .endef
|
||||||
@ -165,6 +167,8 @@
|
|||||||
.def _WaitEvent; .scl 2; .type 32; .endef
|
.def _WaitEvent; .scl 2; .type 32; .endef
|
||||||
.def _WaitEventTimeout; .scl 2; .type 32; .endef
|
.def _WaitEventTimeout; .scl 2; .type 32; .endef
|
||||||
|
|
||||||
|
.def _FS_Service; .scl 2; .type 32; .endef
|
||||||
|
|
||||||
_AcpiGetRootPtr:
|
_AcpiGetRootPtr:
|
||||||
|
|
||||||
_AllocKernelSpace:
|
_AllocKernelSpace:
|
||||||
@ -244,6 +248,8 @@ _UserFree:
|
|||||||
_WaitEvent:
|
_WaitEvent:
|
||||||
_WaitEventTimeout:
|
_WaitEventTimeout:
|
||||||
|
|
||||||
|
_FS_Service:
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.section .drectve
|
.section .drectve
|
||||||
@ -326,4 +332,4 @@ _WaitEventTimeout:
|
|||||||
|
|
||||||
.ascii " -export:WaitEvent" # stdcall
|
.ascii " -export:WaitEvent" # stdcall
|
||||||
.ascii " -export:WaitEventTimeout" # stdcall
|
.ascii " -export:WaitEventTimeout" # stdcall
|
||||||
|
.ascii " -export:FS_Service" # watch system call 70
|
||||||
|
@ -1,23 +1,12 @@
|
|||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
int create_file(const char *path)
|
int create_file(const char *path)
|
||||||
{
|
{
|
||||||
int retval;
|
int err=0;
|
||||||
int count;
|
ksys70_t k;
|
||||||
__asm__ __volatile__ (
|
k.p00 = 2;
|
||||||
"pushl $0 \n\t"
|
k.p12 = 0;
|
||||||
"pushl $0 \n\t"
|
k.p20 = 0;
|
||||||
"movl %2, 1(%%esp) \n\t"
|
k.p21 = path;
|
||||||
"pushl $0 \n\t"
|
return FS_Service(&k, &err);
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $2 \n\t"
|
|
||||||
"movl %%esp, %%ebx \n\t"
|
|
||||||
"movl $70, %%eax \n\t"
|
|
||||||
"int $0x40 \n\t"
|
|
||||||
"addl $28, %%esp \n\t"
|
|
||||||
:"=a" (retval), "=b"(count)
|
|
||||||
:"r" (path)
|
|
||||||
);
|
|
||||||
return retval;
|
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
#pragma pack(push,1)
|
#pragma pack(push,1)
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -52,31 +53,16 @@ typedef struct
|
|||||||
unsigned size;
|
unsigned size;
|
||||||
unsigned size_high;
|
unsigned size_high;
|
||||||
} FILEINFO;
|
} FILEINFO;
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
||||||
int get_fileinfo(const char *path, FILEINFO *info)
|
int get_fileinfo(const char *path, FILEINFO *info)
|
||||||
{
|
{
|
||||||
int retval;
|
ksys70_t k;
|
||||||
int tmp;
|
int err;
|
||||||
|
k.p00 = 5;
|
||||||
|
k.bdfe = info;
|
||||||
|
k.p20 = 0;
|
||||||
|
k.p21 = path;
|
||||||
|
return FS_Service(&k, err);
|
||||||
|
}
|
||||||
|
|
||||||
asm __volatile__
|
|
||||||
(
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"movl %2, 1(%%esp) \n\t"
|
|
||||||
"pushl %%ebx \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $0 \n\t"
|
|
||||||
"pushl $5 \n\t"
|
|
||||||
"movl %%esp, %%ebx \n\t"
|
|
||||||
"movl $70, %%eax \n\t"
|
|
||||||
"int $0x40 \n\t"
|
|
||||||
"addl $28, %%esp \n\t"
|
|
||||||
:"=a" (retval),"=b"(tmp)
|
|
||||||
:"r" (path), "b" (info)
|
|
||||||
);
|
|
||||||
return retval;
|
|
||||||
};
|
|
||||||
|
@ -1,22 +1,13 @@
|
|||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
int set_file_size(const char *path, unsigned size)
|
int set_file_size(const char *path, unsigned size)
|
||||||
{
|
{
|
||||||
int retval;
|
ksys70_t k;
|
||||||
int tmp;
|
int err;
|
||||||
__asm__ __volatile__(
|
k.p00 = 4;
|
||||||
"pushl $0 \n\t"
|
k.p04dw = size;
|
||||||
"pushl $0 \n\t"
|
k.p08dw = 0;
|
||||||
"movl %2, 1(%%esp) \n\t"
|
k.p20 = 0;
|
||||||
"pushl $0 \n\t"
|
k.p21 = path;
|
||||||
"pushl $0 \n\t"
|
return FS_Service(&k, &err);
|
||||||
"pushl $0 \n\t"
|
}
|
||||||
"pushl %%ebx \n\t"
|
|
||||||
"push $4 \n\t"
|
|
||||||
"movl %%esp, %%ebx \n\t"
|
|
||||||
"movl $70, %%eax \n\t"
|
|
||||||
"int $0x40 \n\t"
|
|
||||||
"addl $28, %%esp \n\t"
|
|
||||||
:"=a" (retval), "=b"(tmp)
|
|
||||||
:"r" (path), "b" (size));
|
|
||||||
return retval;
|
|
||||||
};
|
|
||||||
|
@ -1,25 +1,20 @@
|
|||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
int write_file(const char *path,const void *buff,
|
int write_file(const char *path,const void *buff,
|
||||||
unsigned offset,unsigned count,unsigned *writes)
|
unsigned offset,unsigned count,unsigned *writes)
|
||||||
{
|
{
|
||||||
int retval;
|
ksys70_t k;
|
||||||
unsigned cnt;
|
k.p00 = 3;
|
||||||
__asm__ __volatile__(
|
k.p04 = offset;
|
||||||
"pushl $0 \n\t"
|
k.p12 = count;
|
||||||
"pushl $0 \n\t"
|
k.cbuf16 = buff;
|
||||||
"movl %%eax, 1(%%esp) \n\t"
|
k.p20 = 0;
|
||||||
"pushl %%ebx \n\t"
|
k.p21 = path;
|
||||||
"pushl %%edx \n\t"
|
int status;
|
||||||
"pushl $0 \n\t"
|
unsigned bytes_written_v;
|
||||||
"pushl %%ecx \n\t"
|
FS_Service(&k, &bytes_written_v);
|
||||||
"pushl $3 \n\t"
|
if (!status){
|
||||||
"movl %%esp, %%ebx \n\t"
|
*writes = bytes_written_v;
|
||||||
"mov $70, %%eax \n\t"
|
}
|
||||||
"int $0x40 \n\t"
|
return status;
|
||||||
"addl $28, %%esp \n\t"
|
}
|
||||||
:"=a" (retval), "=b"(cnt)
|
|
||||||
:"a"(path),"b"(buff),"c"(offset),"d"(count));
|
|
||||||
if(writes)
|
|
||||||
*writes = cnt;
|
|
||||||
return retval;
|
|
||||||
};
|
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
typedef u32 addr_t;
|
typedef u32 addr_t;
|
||||||
typedef u32 count_t;
|
typedef u32 count_t;
|
||||||
|
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int width;
|
int width;
|
||||||
@ -24,7 +26,30 @@ struct kos32_pdev
|
|||||||
u8 bus;
|
u8 bus;
|
||||||
u8 reserved[2];
|
u8 reserved[2];
|
||||||
u32 owner;
|
u32 owner;
|
||||||
} __attribute__((packed));
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned p00;
|
||||||
|
union{
|
||||||
|
uint64_t p04;
|
||||||
|
struct {
|
||||||
|
unsigned p04dw;
|
||||||
|
unsigned p08dw;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
unsigned p12;
|
||||||
|
union {
|
||||||
|
unsigned p16;
|
||||||
|
const char *new_name;
|
||||||
|
void *bdfe;
|
||||||
|
void *buf16;
|
||||||
|
const void *cbuf16;
|
||||||
|
};
|
||||||
|
char p20;
|
||||||
|
const char *p21;
|
||||||
|
}ksys70_t;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@ -507,7 +532,17 @@ static inline void *vzalloc(unsigned long size)
|
|||||||
return mem;
|
return mem;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static inline int power_supply_is_system_supplied(void) { return -1; };
|
static inline int power_supply_is_system_supplied(void) { return -1; };
|
||||||
|
|
||||||
|
static inline int FS_Service(ksys70_t *k, int* err){
|
||||||
|
int status;
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"call *__imp__FS_Service"
|
||||||
|
:"=a" (status), "=b" (*err)
|
||||||
|
:"b" (k)
|
||||||
|
:"memory"
|
||||||
|
);
|
||||||
|
__asm__ __volatile__ ("":::"ebx","ecx","edx","esi","edi");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user