Implement and export more acpi wrappers.
This commit is contained in:
parent
18c6f4922c
commit
2f8181504c
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@ umka_shell
|
|||||||
umka_fuse
|
umka_fuse
|
||||||
umka_os
|
umka_os
|
||||||
umka_ping
|
umka_ping
|
||||||
|
umka_gen_devices_dat
|
||||||
mkdirrange
|
mkdirrange
|
||||||
mkfilepattern
|
mkfilepattern
|
||||||
lfbviewx
|
lfbviewx
|
||||||
|
14
makefile
14
makefile
@ -11,8 +11,8 @@ CFLAGS_32=$(CFLAGS) -m32
|
|||||||
LDFLAGS=-no-pie
|
LDFLAGS=-no-pie
|
||||||
LDFLAGS_32=$(LDFLAGS) -m32
|
LDFLAGS_32=$(LDFLAGS) -m32
|
||||||
|
|
||||||
all: umka_shell umka_fuse umka_os umka.sym umka.prp umka.lst tags \
|
all: umka_shell umka_fuse umka_os umka_gen_devices_dat umka.sym umka.prp \
|
||||||
covpreproc default.skn skin.skn
|
umka.lst tags covpreproc default.skn skin.skn
|
||||||
|
|
||||||
covpreproc: covpreproc.c
|
covpreproc: covpreproc.c
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
|
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
|
||||||
@ -28,6 +28,9 @@ umka_os: umka_os.o umka.o shell.o lodepng.o vdisk.o vnet.o trace.o trace_lbr.o \
|
|||||||
pci.o thread.o umka_ping.o
|
pci.o thread.o umka_ping.o
|
||||||
$(CC) $(LDFLAGS_32) $^ -o $@ -static -T umka.ld
|
$(CC) $(LDFLAGS_32) $^ -o $@ -static -T umka.ld
|
||||||
|
|
||||||
|
umka_gen_devices_dat: umka_gen_devices_dat.o umka.o pci.o thread.o
|
||||||
|
$(CC) $(LDFLAGS_32) $^ -o $@ -static -T umka.ld
|
||||||
|
|
||||||
umka.o umka.fas: umka.asm
|
umka.o umka.fas: umka.asm
|
||||||
INCLUDE="$(KOLIBRIOS)/kernel/trunk;$(KOLIBRIOS)/programs/develop/libraries/libcrash/hash" \
|
INCLUDE="$(KOLIBRIOS)/kernel/trunk;$(KOLIBRIOS)/programs/develop/libraries/libcrash/hash" \
|
||||||
$(FASM) $< umka.o -s umka.fas -m 1234567
|
$(FASM) $< umka.o -s umka.fas -m 1234567
|
||||||
@ -83,11 +86,14 @@ umka_fuse.o: umka_fuse.c umka.h
|
|||||||
umka_os.o: umka_os.c umka.h
|
umka_os.o: umka_os.c umka.h
|
||||||
$(CC) $(CFLAGS_32) -c $< -D_XOPEN_SOURCE=600
|
$(CC) $(CFLAGS_32) -c $< -D_XOPEN_SOURCE=600
|
||||||
|
|
||||||
|
umka_gen_devices_dat.o: umka_gen_devices_dat.c umka.h
|
||||||
|
$(CC) $(CFLAGS_32) -c $<
|
||||||
|
|
||||||
umka_ping.o: umka_ping.c umka.h
|
umka_ping.o: umka_ping.c umka.h
|
||||||
$(CC) $(CFLAGS_32) -D_DEFAULT_SOURCE -c $<
|
$(CC) $(CFLAGS_32) -D_DEFAULT_SOURCE -c $<
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o umka_shell umka_fuse umka_os umka.fas umka.sym umka.lst umka.prp \
|
rm -f *.o umka_shell umka_fuse umka_os umka_gen_devices_dat umka.fas \
|
||||||
coverage
|
umka.sym umka.lst umka.prp coverage
|
||||||
|
11
umka.asm
11
umka.asm
@ -77,6 +77,17 @@ public net_buff_alloc as 'kos_net_buff_alloc'
|
|||||||
public mem_block_list
|
public mem_block_list
|
||||||
public pci_root
|
public pci_root
|
||||||
|
|
||||||
|
public acpi.aml.init as "kos_acpi_aml_init"
|
||||||
|
public acpi_root as "kos_acpi_root"
|
||||||
|
public aml._.attach as "kos_aml_attach"
|
||||||
|
public acpi.fill_pci_irqs as "kos_acpi_fill_pci_irqs"
|
||||||
|
public acpi.aml.new_thread as "kos_acpi_aml_new_thread"
|
||||||
|
public aml._.alloc_node as "kos_aml_alloc_node"
|
||||||
|
public aml._.constructor.integer as "kos_aml_constructor_integer"
|
||||||
|
public aml._.constructor.package as "kos_aml_constructor_package"
|
||||||
|
public acpi._.lookup_node as "kos_acpi_lookup_node"
|
||||||
|
public acpi._.print_tree as "kos_acpi_print_tree"
|
||||||
|
|
||||||
public window._.set_screen as 'kos_window_set_screen'
|
public window._.set_screen as 'kos_window_set_screen'
|
||||||
public _display as 'kos_display'
|
public _display as 'kos_display'
|
||||||
|
|
||||||
|
114
umka.h
114
umka.h
@ -2,11 +2,10 @@
|
|||||||
#define UMKA_H_INCLUDED
|
#define UMKA_H_INCLUDED
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <setjmp.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <signal.h>
|
#include <signal.h> // for irq0: siginfo_t
|
||||||
|
|
||||||
|
#define STDCALL __attribute__((__stdcall__))
|
||||||
|
|
||||||
#define BDFE_LEN_CP866 304
|
#define BDFE_LEN_CP866 304
|
||||||
#define BDFE_LEN_UNICODE 560
|
#define BDFE_LEN_UNICODE 560
|
||||||
@ -139,19 +138,16 @@ typedef struct disk_t disk_t;
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t strucsize;
|
uint32_t strucsize;
|
||||||
__attribute__((__stdcall__)) void (*close)(void *userdata);
|
STDCALL void (*close)(void *userdata);
|
||||||
__attribute__((__stdcall__)) void (*closemedia)(void *userdata);
|
STDCALL void (*closemedia)(void *userdata);
|
||||||
__attribute__((__stdcall__)) int (*querymedia)(void *userdata,
|
STDCALL int (*querymedia)(void *userdata, diskmediainfo_t *info);
|
||||||
diskmediainfo_t *info);
|
STDCALL int (*read)(void *userdata, void *buffer, off_t startsector,
|
||||||
__attribute__((__stdcall__)) int (*read)(void *userdata, void *buffer,
|
size_t *numsectors);
|
||||||
off_t startsector,
|
STDCALL int (*write)(void *userdata, void *buffer, off_t startsector,
|
||||||
size_t *numsectors);
|
size_t *numsectors);
|
||||||
__attribute__((__stdcall__)) int (*write)(void *userdata, void *buffer,
|
STDCALL int (*flush)(void *userdata);
|
||||||
off_t startsector,
|
STDCALL unsigned int (*adjust_cache_size)(void *userdata,
|
||||||
size_t *numsectors);
|
size_t suggested_size);
|
||||||
__attribute__((__stdcall__)) int (*flush)(void *userdata);
|
|
||||||
__attribute__((__stdcall__)) unsigned int
|
|
||||||
(*adjust_cache_size)(void *userdata, size_t suggested_size);
|
|
||||||
} diskfunc_t;
|
} diskfunc_t;
|
||||||
|
|
||||||
struct disk_t {
|
struct disk_t {
|
||||||
@ -353,9 +349,9 @@ struct net_device_t {
|
|||||||
char *name; // ptr to 0 terminated string
|
char *name; // ptr to 0 terminated string
|
||||||
|
|
||||||
// ptrs to driver functions
|
// ptrs to driver functions
|
||||||
__attribute__((__stdcall__)) void (*unload) (void);
|
STDCALL void (*unload) (void);
|
||||||
__attribute__((__stdcall__)) void (*reset) (void);
|
STDCALL void (*reset) (void);
|
||||||
__attribute__((__stdcall__)) int (*transmit) (net_buff_t *);
|
STDCALL int (*transmit) (net_buff_t *);
|
||||||
|
|
||||||
uint64_t bytes_tx; // statistics, updated by the driver
|
uint64_t bytes_tx; // statistics, updated by the driver
|
||||||
uint64_t bytes_rx;
|
uint64_t bytes_rx;
|
||||||
@ -376,6 +372,27 @@ typedef struct {
|
|||||||
uint16_t ttl;
|
uint16_t ttl;
|
||||||
} arp_entry_t;
|
} arp_entry_t;
|
||||||
|
|
||||||
|
typedef struct acpi_node acpi_node_t;
|
||||||
|
struct acpi_node {
|
||||||
|
uint32_t name;
|
||||||
|
int32_t refcount;
|
||||||
|
acpi_node_t *parent;
|
||||||
|
acpi_node_t *children;
|
||||||
|
acpi_node_t *next;
|
||||||
|
int32_t type;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
acpi_node_t node;
|
||||||
|
uint64_t value;
|
||||||
|
} kos_node_integer_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
acpi_node_t node;
|
||||||
|
acpi_node_t **list;
|
||||||
|
size_t el_cnt;
|
||||||
|
} kos_node_package_t;
|
||||||
|
|
||||||
__attribute__((__noreturn__)) void
|
__attribute__((__noreturn__)) void
|
||||||
kos_osloop(void);
|
kos_osloop(void);
|
||||||
|
|
||||||
@ -391,13 +408,13 @@ i40(void);
|
|||||||
uint32_t
|
uint32_t
|
||||||
kos_time_to_epoch(uint32_t *time);
|
kos_time_to_epoch(uint32_t *time);
|
||||||
|
|
||||||
__attribute__((__stdcall__)) disk_t *
|
STDCALL disk_t *
|
||||||
disk_add(diskfunc_t *disk, const char *name, void *userdata, uint32_t flags);
|
disk_add(diskfunc_t *disk, const char *name, void *userdata, uint32_t flags);
|
||||||
|
|
||||||
__attribute__((__stdcall__)) void *
|
STDCALL void *
|
||||||
disk_media_changed(diskfunc_t *disk, int inserted);
|
disk_media_changed(diskfunc_t *disk, int inserted);
|
||||||
|
|
||||||
__attribute__((__stdcall__)) void
|
STDCALL void
|
||||||
disk_del(disk_t *disk);
|
disk_del(disk_t *disk);
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -413,7 +430,7 @@ extern uint8_t kos_ramdisk[2880*512];
|
|||||||
disk_t *
|
disk_t *
|
||||||
kos_ramdisk_init(void);
|
kos_ramdisk_init(void);
|
||||||
|
|
||||||
__attribute__((__stdcall__)) void
|
STDCALL void
|
||||||
kos_set_mouse_data(uint32_t btn_state, int32_t xmoving, int32_t ymoving,
|
kos_set_mouse_data(uint32_t btn_state, int32_t xmoving, int32_t ymoving,
|
||||||
int32_t vscroll, int32_t hscroll);
|
int32_t vscroll, int32_t hscroll);
|
||||||
|
|
||||||
@ -425,7 +442,7 @@ umka_mouse_move(int lbheld, int mbheld, int rbheld, int xabs, int32_t xmoving,
|
|||||||
kos_set_mouse_data(btn_state, xmoving, ymoving, vscroll, hscroll);
|
kos_set_mouse_data(btn_state, xmoving, ymoving, vscroll, hscroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__)) net_buff_t *
|
STDCALL net_buff_t *
|
||||||
kos_net_buff_alloc(size_t size);
|
kos_net_buff_alloc(size_t size);
|
||||||
|
|
||||||
static inline size_t
|
static inline size_t
|
||||||
@ -471,6 +488,49 @@ kos_acpi_call_name(void *ctx, const char *name) {
|
|||||||
: "memory", "cc");
|
: "memory", "cc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define KOS_ACPI_NODE_Uninitialized 1
|
||||||
|
#define KOS_ACPI_NODE_Integer 2
|
||||||
|
#define KOS_ACPI_NODE_String 3
|
||||||
|
#define KOS_ACPI_NODE_Buffer 4
|
||||||
|
#define KOS_ACPI_NODE_Package 5
|
||||||
|
#define KOS_ACPI_NODE_OpRegionField 6
|
||||||
|
#define KOS_ACPI_NODE_IndexField 7
|
||||||
|
#define KOS_ACPI_NODE_BankField 8
|
||||||
|
#define KOS_ACPI_NODE_Device 9
|
||||||
|
|
||||||
|
extern acpi_node_t *kos_acpi_root;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int pew[0x100];
|
||||||
|
} amlctx_t;
|
||||||
|
|
||||||
|
void
|
||||||
|
kos_acpi_aml_init();
|
||||||
|
|
||||||
|
STDCALL void
|
||||||
|
kos_aml_attach(acpi_node_t *parent, acpi_node_t *node);
|
||||||
|
|
||||||
|
STDCALL void
|
||||||
|
kos_acpi_fill_pci_irqs(void *ctx);
|
||||||
|
|
||||||
|
STDCALL amlctx_t*
|
||||||
|
kos_acpi_aml_new_thread();
|
||||||
|
|
||||||
|
STDCALL acpi_node_t*
|
||||||
|
kos_aml_alloc_node(int32_t type);
|
||||||
|
|
||||||
|
STDCALL acpi_node_t*
|
||||||
|
kos_aml_constructor_integer(void);
|
||||||
|
|
||||||
|
STDCALL acpi_node_t*
|
||||||
|
kos_aml_constructor_package(size_t el_cnt);
|
||||||
|
|
||||||
|
STDCALL acpi_node_t*
|
||||||
|
kos_acpi_lookup_node(acpi_node_t *root, char *name);
|
||||||
|
|
||||||
|
STDCALL void
|
||||||
|
kos_acpi_print_tree(void *ctx);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
uint32_t errorcode;
|
uint32_t errorcode;
|
||||||
@ -504,7 +564,7 @@ kos_net_add_device(net_device_t *dev) {
|
|||||||
return dev_num;
|
return dev_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__)) void
|
STDCALL void
|
||||||
kos_window_set_screen(ssize_t left, ssize_t top, ssize_t right, ssize_t bottom,
|
kos_window_set_screen(ssize_t left, ssize_t top, ssize_t right, ssize_t bottom,
|
||||||
ssize_t proc);
|
ssize_t proc);
|
||||||
|
|
||||||
@ -762,7 +822,7 @@ extern void *acpi_ctx;
|
|||||||
extern uint32_t kos_acpi_usage;
|
extern uint32_t kos_acpi_usage;
|
||||||
extern uint32_t kos_acpi_node_alloc_cnt;
|
extern uint32_t kos_acpi_node_alloc_cnt;
|
||||||
extern uint32_t kos_acpi_node_free_cnt;
|
extern uint32_t kos_acpi_node_free_cnt;
|
||||||
extern uint32_t kos_acpi_count_nodes(void *ctx) __attribute__((__stdcall__));
|
extern uint32_t kos_acpi_count_nodes(void *ctx) STDCALL;
|
||||||
extern disk_t disk_list;
|
extern disk_t disk_list;
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
#include "vdisk.h"
|
#include "vdisk.h"
|
||||||
#include "umka.h"
|
#include "umka.h"
|
||||||
|
|
||||||
|
#define UMKA_DEFAULT_DISPLAY_WIDTH 400
|
||||||
|
#define UMKA_DEFAULT_DISPLAY_HEIGHT 300
|
||||||
|
|
||||||
#define DIRENTS_TO_READ 100
|
#define DIRENTS_TO_READ 100
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -151,6 +154,12 @@ main(int argc, char *argv[]) {
|
|||||||
printf("usage: umka_fuse dir img\n");
|
printf("usage: umka_fuse dir img\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kos_boot.bpp = 32;
|
||||||
|
kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH;
|
||||||
|
kos_boot.y_res = UMKA_DEFAULT_DISPLAY_HEIGHT;
|
||||||
|
kos_boot.pitch = UMKA_DEFAULT_DISPLAY_WIDTH*4; // 32bpp
|
||||||
|
|
||||||
umka_init();
|
umka_init();
|
||||||
void *userdata = vdisk_init(argv[2], 1, 0u);
|
void *userdata = vdisk_init(argv[2], 1, 0u);
|
||||||
void *vdisk = disk_add(&vdisk_functions, "hd0", userdata, 0);
|
void *vdisk = disk_add(&vdisk_functions, "hd0", userdata, 0);
|
||||||
|
27
umka_os.c
27
umka_os.c
@ -1,3 +1,22 @@
|
|||||||
|
/*
|
||||||
|
UMKa - User-Mode KolibriOS developer tools
|
||||||
|
umka_os - kind of KolibriOS rump kernel
|
||||||
|
Copyright (C) 2018--2021 Ivan Baravy <dunkaist@gmail.com>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@ -13,6 +32,9 @@
|
|||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
|
#define UMKA_DEFAULT_DISPLAY_WIDTH 400
|
||||||
|
#define UMKA_DEFAULT_DISPLAY_HEIGHT 300
|
||||||
|
|
||||||
#define THREAD_STACK_SIZE 0x100000
|
#define THREAD_STACK_SIZE 0x100000
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -104,6 +126,11 @@ main() {
|
|||||||
*/
|
*/
|
||||||
printf("pid=%d, kos_lfb_base=%p\n", getpid(), (void*)kos_lfb_base);
|
printf("pid=%d, kos_lfb_base=%p\n", getpid(), (void*)kos_lfb_base);
|
||||||
|
|
||||||
|
kos_boot.bpp = 32;
|
||||||
|
kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH;
|
||||||
|
kos_boot.y_res = UMKA_DEFAULT_DISPLAY_HEIGHT;
|
||||||
|
kos_boot.pitch = UMKA_DEFAULT_DISPLAY_WIDTH*4; // 32bpp
|
||||||
|
|
||||||
umka_init();
|
umka_init();
|
||||||
umka_stack_init();
|
umka_stack_init();
|
||||||
|
|
||||||
|
20
vdisk.c
20
vdisk.c
@ -37,8 +37,8 @@ void *vdisk_init(const char *fname, int adjust_cache_size, size_t cache_size) {
|
|||||||
return vdisk;
|
return vdisk;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vdisk_close(void *userdata) {
|
vdisk_close(void *userdata) {
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
vdisk_t *vdisk = userdata;
|
vdisk_t *vdisk = userdata;
|
||||||
fclose(vdisk->file);
|
fclose(vdisk->file);
|
||||||
@ -46,8 +46,8 @@ void vdisk_close(void *userdata) {
|
|||||||
COVERAGE_ON();
|
COVERAGE_ON();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_read(void *userdata, void *buffer, off_t startsector,
|
vdisk_read(void *userdata, void *buffer, off_t startsector,
|
||||||
size_t *numsectors) {
|
size_t *numsectors) {
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
vdisk_t *vdisk = userdata;
|
vdisk_t *vdisk = userdata;
|
||||||
@ -57,8 +57,8 @@ int vdisk_read(void *userdata, void *buffer, off_t startsector,
|
|||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_write(void *userdata, void *buffer, off_t startsector,
|
vdisk_write(void *userdata, void *buffer, off_t startsector,
|
||||||
size_t *numsectors) {
|
size_t *numsectors) {
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
vdisk_t *vdisk = userdata;
|
vdisk_t *vdisk = userdata;
|
||||||
@ -68,8 +68,8 @@ int vdisk_write(void *userdata, void *buffer, off_t startsector,
|
|||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_querymedia(void *userdata, diskmediainfo_t *minfo) {
|
vdisk_querymedia(void *userdata, diskmediainfo_t *minfo) {
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
vdisk_t *vdisk = userdata;
|
vdisk_t *vdisk = userdata;
|
||||||
minfo->flags = 0u;
|
minfo->flags = 0u;
|
||||||
@ -79,8 +79,8 @@ int vdisk_querymedia(void *userdata, diskmediainfo_t *minfo) {
|
|||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL size_t
|
||||||
size_t vdisk_adjust_cache_size(void *userdata, size_t suggested_size) {
|
vdisk_adjust_cache_size(void *userdata, size_t suggested_size) {
|
||||||
vdisk_t *vdisk = userdata;
|
vdisk_t *vdisk = userdata;
|
||||||
if (vdisk->adjust_cache_size) {
|
if (vdisk->adjust_cache_size) {
|
||||||
return vdisk->cache_size;
|
return vdisk->cache_size;
|
||||||
|
23
vdisk.h
23
vdisk.h
@ -7,22 +7,21 @@
|
|||||||
|
|
||||||
void *vdisk_init(const char *fname, int adjust_cache_size, size_t cache_size);
|
void *vdisk_init(const char *fname, int adjust_cache_size, size_t cache_size);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vdisk_close(void *userdata);
|
vdisk_close(void *userdata);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_read(void *userdata, void *buffer, off_t startsector,
|
vdisk_read(void *userdata, void *buffer, off_t startsector, size_t *numsectors);
|
||||||
size_t *numsectors);
|
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_write(void *userdata, void *buffer, off_t startsector,
|
vdisk_write(void *userdata, void *buffer, off_t startsector,
|
||||||
size_t *numsectors);
|
size_t *numsectors);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vdisk_querymedia(void *userdata, diskmediainfo_t *minfo);
|
vdisk_querymedia(void *userdata, diskmediainfo_t *minfo);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL unsigned int
|
||||||
unsigned int vdisk_adjust_cache_size(void *userdata, unsigned suggested_size);
|
vdisk_adjust_cache_size(void *userdata, unsigned suggested_size);
|
||||||
|
|
||||||
extern diskfunc_t vdisk_functions;
|
extern diskfunc_t vdisk_functions;
|
||||||
|
|
||||||
|
12
vnet.c
12
vnet.c
@ -42,15 +42,15 @@ net_device_t *vnet_init(int fd) {
|
|||||||
return vnet;
|
return vnet;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vnet_unload() {
|
vnet_unload() {
|
||||||
printf("vnet_unload\n");
|
printf("vnet_unload\n");
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
COVERAGE_ON();
|
COVERAGE_ON();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vnet_reset() {
|
vnet_reset() {
|
||||||
printf("vnet_reset\n");
|
printf("vnet_reset\n");
|
||||||
COVERAGE_OFF();
|
COVERAGE_OFF();
|
||||||
COVERAGE_ON();
|
COVERAGE_ON();
|
||||||
@ -63,8 +63,8 @@ static void dump_net_buff(net_buff_t *buf) {
|
|||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vnet_transmit(net_buff_t *buf) {
|
vnet_transmit(net_buff_t *buf) {
|
||||||
net_device_t *vnet;
|
net_device_t *vnet;
|
||||||
__asm__ __inline__ __volatile__ (
|
__asm__ __inline__ __volatile__ (
|
||||||
"nop"
|
"nop"
|
||||||
|
15
vnet.h
15
vnet.h
@ -7,15 +7,16 @@
|
|||||||
|
|
||||||
net_device_t *vnet_init(int fd);
|
net_device_t *vnet_init(int fd);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vnet_unload(void);
|
vnet_unload(void);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL void
|
||||||
void vnet_reset(void);
|
vnet_reset(void);
|
||||||
|
|
||||||
__attribute__((__stdcall__))
|
STDCALL int
|
||||||
int vnet_transmit(net_buff_t *buf);
|
vnet_transmit(net_buff_t *buf);
|
||||||
|
|
||||||
void vnet_receive_frame(net_device_t *dev, void *data, size_t size);
|
void
|
||||||
|
vnet_receive_frame(net_device_t *dev, void *data, size_t size);
|
||||||
|
|
||||||
#endif // VNET_H_INCLUDED
|
#endif // VNET_H_INCLUDED
|
||||||
|
Loading…
Reference in New Issue
Block a user