diff --git a/.gitignore b/.gitignore index cd9a710..106ee54 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,4 @@ apps/readdir apps/loader apps/asciivju apps/justawindow -test/runtests +runtests diff --git a/makefile b/makefile index 92beb5c..2e5ab43 100644 --- a/makefile +++ b/makefile @@ -54,9 +54,9 @@ endif ifeq ($(HOST),linux) all: umka_shell umka_fuse umka_os umka_gen_devices_dat umka.sym umka.prp \ - umka.lst tags default.skn skin.skn test/runtests + umka.lst tags default.skn skin.skn runtests else ifeq ($(HOST),windows) -all: umka_shell umka.sym umka.prp umka.lst default.skn skin.skn test/runtests +all: umka_shell umka.sym umka.prp umka.lst default.skn skin.skn runtests else $(error your HOST is not supported) endif @@ -183,10 +183,10 @@ umka_os.o: umka_os.c umka.h umka_gen_devices_dat.o: umka_gen_devices_dat.c umka.h $(CC) $(CFLAGS_32) -c $< -test/runtests: test/runtests.o deps/optparse/optparse.o +runtests: runtests.o deps/optparse/optparse.o $(CC) $(LDFLAGS_32) -o $@ $^ $(LIBS) -test/runtests.o: test/runtests.c +runtests.o: runtests.c $(CC) $(CFLAGS_32) -c $< -o $@ -Wno-deprecated-declarations @@ -195,6 +195,6 @@ test/runtests.o: test/runtests.c clean: rm -f umka_shell umka_fuse umka_os umka_gen_devices_dat umka.fas \ umka.sym umka.lst umka.prp umka.cov coverage *.skn colors.dtp \ - test/runtests + runtests find . -name "*.o" -delete find . -name "*.a" -delete diff --git a/test/runtests.c b/runtests.c similarity index 99% rename from test/runtests.c rename to runtests.c index 3eabbba..b571b47 100644 --- a/test/runtests.c +++ b/runtests.c @@ -36,6 +36,7 @@ _Thread_local char timeoutfname[PATH_MAX]; _Thread_local char reffname[PATH_MAX]; _Thread_local char outfname[PATH_MAX]; +int coverage = 0; int silent_success = 1; static int diff --git a/shell.c b/shell.c index 837d4b4..6929094 100644 --- a/shell.c +++ b/shell.c @@ -1127,18 +1127,30 @@ cmd_dump_wdata(struct shell_ctx *ctx, int argc, char **argv) { (void)ctx; const char *usage = \ "usage: dump_wdata \n" - " index index into wdata array to dump\n"; + " index index into wdata array to dump\n" + " -p print fields that are pointers\n"; if (argc < 2) { fputs(usage, ctx->fout); return; } + int show_pointers = 0; int idx = strtol(argv[1], NULL, 0); + if (argc > 2 && !strcmp(argv[2], "-p")) { + show_pointers = 1; + } wdata_t *w = kos_window_data + idx; fprintf(ctx->fout, "captionEncoding: %u\n", w->caption_encoding); fprintf(ctx->fout, "caption: %s\n", w->caption); fprintf(ctx->fout, "clientbox (ltwh): %u %u %u %u\n", w->clientbox.left, w->clientbox.top, w->clientbox.width, w->clientbox.height); + fprintf(ctx->fout, "draw_bgr_x: %u\n", w->draw_bgr_x); + fprintf(ctx->fout, "draw_bgr_y: %u\n", w->draw_bgr_y); + fprintf(ctx->fout, "thread: %u\n", (uintptr_t)(w->thread - kos_slot_base)); + if (show_pointers) { + fprintf(ctx->fout, "thread: %p\n", (void*)w->thread); + fprintf(ctx->fout, "cursor: %p\n", (void*)w->cursor); + } } static void @@ -1167,7 +1179,6 @@ cmd_dump_appdata(struct shell_ctx *ctx, int argc, char **argv) { fprintf(ctx->fout, "except_mask: %" PRIx32 "\n", a->except_mask); if (show_pointers) { fprintf(ctx->fout, "pl0_stack: %p\n", (void*)a->pl0_stack); - fprintf(ctx->fout, "cursor: %p\n", (void*)a->cursor); fprintf(ctx->fout, "fd_ev: %p\n", (void*)a->fd_ev); fprintf(ctx->fout, "bk_ev: %p\n", (void*)a->bk_ev); fprintf(ctx->fout, "fd_obj: %p\n", (void*)a->fd_obj); @@ -1176,8 +1187,6 @@ cmd_dump_appdata(struct shell_ctx *ctx, int argc, char **argv) { } fprintf(ctx->fout, "dbg_state: %u\n", a->dbg_state); fprintf(ctx->fout, "cur_dir: %s\n", a->cur_dir); - fprintf(ctx->fout, "draw_bgr_x: %u\n", a->draw_bgr_x); - fprintf(ctx->fout, "draw_bgr_y: %u\n", a->draw_bgr_y); fprintf(ctx->fout, "event_mask: %" PRIx32 "\n", a->event_mask); fprintf(ctx->fout, "tid: %" PRId32 "\n", a->tid); fprintf(ctx->fout, "state: 0x%" PRIx8 "\n", a->state); diff --git a/test/makefile b/test/makefile index de75502..4e59c29 100644 --- a/test/makefile +++ b/test/makefile @@ -8,9 +8,9 @@ else UMKA_SHELL ?= sudo taskset 1 ../umka_shell -c endif -xfs_tests := $(addsuffix .out.log, $(basename $(wildcard *\#xfs_*.t))) -xfsv5_tests := $(addsuffix .out.log, $(basename $(wildcard *\#xfsv5_*.t))) -exfat_tests := $(addsuffix .out.log, $(basename $(wildcard *\#exfat_*.t))) +test_dirs := $(wildcard t???*) +test_logs := $(addsuffix .out.log, $(basename $(wildcard *\#xfsv5_*.t))) +test_run_ := $(addsuffix .out.log, $(basename $(wildcard *\#exfat_*.t))) fat_tests := $(addsuffix .out.log, $(basename $(wildcard *\#fat_*.t))) ext_tests := $(addsuffix .out.log, $(basename $(wildcard *\#ext_*.t))) s05k_tests := $(addsuffix .out.log, $(basename $(wildcard *\#s05k_*.t))) diff --git a/test/t016/ref.log b/test/t016/ref.log index dc6adbb..71a7ce6 100644 --- a/test/t016/ref.log +++ b/test/t016/ref.log @@ -6,6 +6,11 @@ /rd/1: fs=fat, start=0 (0 B), length=2880 (1440 kiB) /> set_skin /sys/DEFAULT.SKN status: 0 +/> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> window_redraw 1 /> draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello /> set_pixel 0 0 0x0000ff @@ -56,8 +61,6 @@ app_name: OS except_mask: 0 dbg_state: 0 cur_dir: -draw_bgr_x: 0 -draw_bgr_y: 0 event_mask: 0 tid: 2 state: 0x0 @@ -67,23 +70,26 @@ keyboard_mode: 0 exec_params: (null) priority: 0 in_schedule: prev (2), next (2) -/> dump_wdata 2 +/> dump_wdata 3 captionEncoding: 0 -caption: +caption: hi_there clientbox (ltwh): 5 24 291 172 +draw_bgr_x: 0 +draw_bgr_y: 0 +thread: 3 /> /> process_info -1 cpu_usage: 0 -window_stack_position: 2 -window_stack_value: 2 +window_stack_position: 3 +window_stack_value: 3 process_name: OS memory_start: 0x00000000 used_memory: 4294967295 (0xffffffff) -pid: 2 +pid: 3 box: 10 5 300 200 slot_state: 0 client_box: 5 24 291 172 -wnd_state: 0x00 +wnd_state: 0x80 /> get_skin_height 24 /> get_screen_area diff --git a/test/t016/run.us b/test/t016/run.us index 7eb110a..e2dc297 100644 --- a/test/t016/run.us +++ b/test/t016/run.us @@ -3,6 +3,10 @@ set_mouse_pos_screen 40 30 #disk_add ../img/kolibri.raw rd -c 0 ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN + +new_sys_thread +switch_to_thread 3 + window_redraw 1 draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello set_pixel 0 0 0x0000ff @@ -33,7 +37,7 @@ set_window_colors 0 0 0 0 0 0 0 0 0 0 dump_win_stack 2 dump_win_pos 2 dump_appdata 2 -dump_wdata 2 +dump_wdata 3 process_info -1 get_skin_height diff --git a/test/t044/ref.log b/test/t044/ref.log index 43fdc57..b79f993 100644 --- a/test/t044/ref.log +++ b/test/t044/ref.log @@ -6,6 +6,10 @@ /> set_skin /sys/DEFAULT.SKN status: 0 /> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> window_redraw 1 /> draw_window 2 10 4 10 0x000088 1 1 1 0 1 4 hello /> window_redraw 2 @@ -13,8 +17,8 @@ status: 0 /> set_window_caption hi_there 0 /> /> new_sys_thread -tid: 3 -/> switch_to_thread 3 +tid: 4 +/> switch_to_thread 4 /> /> window_redraw 1 /> draw_window 4 5 8 5 0x000088 1 1 1 0 1 4 hello @@ -25,17 +29,17 @@ tid: 3 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11223333332221111111111111111111111111111111 -11222222222221111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11334444443331111111111111111111111111111111 +11333333333331111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 @@ -73,17 +77,17 @@ tid: 3 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222222222221111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333333333331111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 @@ -121,18 +125,18 @@ tid: 3 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222222222221111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11222233333321111111111111111111111111111111 -11111133333311111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333333333331111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11333344444431111111111111111111111111111111 +11111144444411111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 diff --git a/test/t044/run.us b/test/t044/run.us index 5988248..9982111 100644 --- a/test/t044/run.us +++ b/test/t044/run.us @@ -3,6 +3,9 @@ umka_boot ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN +new_sys_thread +switch_to_thread 3 + window_redraw 1 draw_window 2 10 4 10 0x000088 1 1 1 0 1 4 hello window_redraw 2 @@ -10,7 +13,7 @@ window_redraw 2 set_window_caption hi_there 0 new_sys_thread -switch_to_thread 3 +switch_to_thread 4 window_redraw 1 draw_window 4 5 8 5 0x000088 1 1 1 0 1 4 hello diff --git a/test/t051/ref.log b/test/t051/ref.log index 5db3b8f..1c71f0b 100644 --- a/test/t051/ref.log +++ b/test/t051/ref.log @@ -6,6 +6,10 @@ /> set_skin /sys/DEFAULT.SKN status: 0 /> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> load_cursor_from_file /sys/fill.cur handle = non-zero /> var $cur_fill diff --git a/test/t051/run.us b/test/t051/run.us index 064796f..a52cddc 100644 --- a/test/t051/run.us +++ b/test/t051/run.us @@ -3,6 +3,9 @@ umka_boot ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN +new_sys_thread +switch_to_thread 3 + load_cursor_from_file /sys/fill.cur var $cur_fill load_cursor_from_mem ./spray.cur diff --git a/test/t054/ref.log b/test/t054/ref.log index 12853f5..f76d8a3 100644 --- a/test/t054/ref.log +++ b/test/t054/ref.log @@ -6,6 +6,10 @@ /> set_skin /sys/DEFAULT.SKN status: 0 /> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> window_redraw 1 /> draw_window 10 300 5 200 0x000088 1 1 1 0 1 3 hello /> window_redraw 2 diff --git a/test/t054/run.us b/test/t054/run.us index 34c5d48..4b07127 100644 --- a/test/t054/run.us +++ b/test/t054/run.us @@ -3,6 +3,9 @@ umka_boot ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN +new_sys_thread +switch_to_thread 3 + window_redraw 1 draw_window 10 300 5 200 0x000088 1 1 1 0 1 3 hello window_redraw 2 diff --git a/test/t066/ref.log b/test/t066/ref.log index 92c6089..b89d52d 100644 --- a/test/t066/ref.log +++ b/test/t066/ref.log @@ -7,6 +7,11 @@ /rd/1: fs=fat, start=0 (0 B), length=2880 (1440 kiB) /> set_skin /sys/DEFAULT.SKN status: 0 +/> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> window_redraw 1 /> draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello /> set_pixel 0 0 0x0000ff @@ -57,8 +62,6 @@ app_name: OS except_mask: 0 dbg_state: 0 cur_dir: -draw_bgr_x: 0 -draw_bgr_y: 0 event_mask: 0 tid: 2 state: 0x0 @@ -68,23 +71,26 @@ keyboard_mode: 0 exec_params: (null) priority: 0 in_schedule: prev (2), next (2) -/> dump_wdata 2 +/> dump_wdata 3 captionEncoding: 0 -caption: +caption: hi_there clientbox (ltwh): 5 24 291 172 +draw_bgr_x: 0 +draw_bgr_y: 0 +thread: 3 /> /> process_info -1 cpu_usage: 0 -window_stack_position: 2 -window_stack_value: 2 +window_stack_position: 3 +window_stack_value: 3 process_name: OS memory_start: 0x00000000 used_memory: 4294967295 (0xffffffff) -pid: 2 +pid: 3 box: 10 5 300 200 slot_state: 0 client_box: 5 24 291 172 -wnd_state: 0x00 +wnd_state: 0x80 /> get_skin_height 24 /> get_screen_area diff --git a/test/t066/run.us b/test/t066/run.us index 3609f73..119ecbd 100644 --- a/test/t066/run.us +++ b/test/t066/run.us @@ -4,6 +4,10 @@ set_mouse_pos_screen 40 30 #disk_add ../img/kolibri.raw rd -c 0 ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN + +new_sys_thread +switch_to_thread 3 + window_redraw 1 draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello set_pixel 0 0 0x0000ff @@ -34,7 +38,7 @@ set_window_colors 0 0 0 0 0 0 0 0 0 0 dump_win_stack 2 dump_win_pos 2 dump_appdata 2 -dump_wdata 2 +dump_wdata 3 process_info -1 get_skin_height diff --git a/test/t067/ref.log b/test/t067/ref.log index 4c8e14e..bf2b408 100644 --- a/test/t067/ref.log +++ b/test/t067/ref.log @@ -7,6 +7,11 @@ /rd/1: fs=fat, start=0 (0 B), length=2880 (1440 kiB) /> set_skin /sys/DEFAULT.SKN status: 0 +/> +/> new_sys_thread +tid: 3 +/> switch_to_thread 3 +/> /> window_redraw 1 /> draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello /> set_pixel 0 0 0x0000ff @@ -57,8 +62,6 @@ app_name: OS except_mask: 0 dbg_state: 0 cur_dir: -draw_bgr_x: 0 -draw_bgr_y: 0 event_mask: 0 tid: 2 state: 0x0 @@ -68,23 +71,26 @@ keyboard_mode: 0 exec_params: (null) priority: 0 in_schedule: prev (2), next (2) -/> dump_wdata 2 +/> dump_wdata 3 captionEncoding: 0 -caption: +caption: hi_there clientbox (ltwh): 5 24 291 172 +draw_bgr_x: 0 +draw_bgr_y: 0 +thread: 3 /> /> process_info -1 cpu_usage: 0 -window_stack_position: 2 -window_stack_value: 2 +window_stack_position: 3 +window_stack_value: 3 process_name: OS memory_start: 0x00000000 used_memory: 4294967295 (0xffffffff) -pid: 2 +pid: 3 box: 10 5 300 200 slot_state: 0 client_box: 5 24 291 172 -wnd_state: 0x00 +wnd_state: 0x80 /> get_skin_height 24 /> get_screen_area diff --git a/test/t067/run.us b/test/t067/run.us index 4eed103..eaac184 100644 --- a/test/t067/run.us +++ b/test/t067/run.us @@ -4,6 +4,10 @@ set_mouse_pos_screen 40 30 #disk_add ../img/kolibri.raw rd -c 0 ramdisk_init ../../img/kolibri.raw set_skin /sys/DEFAULT.SKN + +new_sys_thread +switch_to_thread 3 + window_redraw 1 draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello set_pixel 0 0 0x0000ff @@ -34,7 +38,7 @@ set_window_colors 0 0 0 0 0 0 0 0 0 0 dump_win_stack 2 dump_win_pos 2 dump_appdata 2 -dump_wdata 2 +dump_wdata 3 process_info -1 get_skin_height diff --git a/umka.asm b/umka.asm index 8497569..2069d74 100644 --- a/umka.asm +++ b/umka.asm @@ -165,7 +165,6 @@ pubsym acpi.count_nodes, 'kos_acpi_count_nodes', 4 pubsym stack_init, 'kos_stack_init', no_mangle pubsym net_add_device, no_mangle -pubsym draw_data pubsym img_background pubsym mem_BACKGROUND pubsym sys_background @@ -262,8 +261,8 @@ include 'proc32.inc' include 'struct.inc' macro BOOT_LO a {} macro BOOT a {} -window_data equ __pew01 -CDDataBuf equ __pew06 +window_data equ __pew_window_data +background_window equ __pew_background_window idts equ __pew07 WIN_STACK equ __pew08 WIN_POS equ __pew09 @@ -297,7 +296,8 @@ macro tss pew {} include 'const.inc' purge tss restore window_data -restore CDDataBuf,idts,WIN_STACK,WIN_POS +restore background_window +restore idts,WIN_STACK,WIN_POS restore FDD_BUFF,WIN_TEMP_XY,KEY_COUNT,KEY_BUFF,BTN_COUNT,BTN_BUFF,BTN_ADDR restore MEM_AMOUNT,SYS_SHUTDOWN,SLOT_BASE,sys_proc,VGABasePtr restore HEAP_BASE @@ -855,8 +855,8 @@ proc umka_boot uses ebx esi edi ebp call calculatebackground call init_display mov eax, [def_cursor] - mov [SLOT_BASE+APPDATA.cursor+sizeof.APPDATA], eax - mov [SLOT_BASE+APPDATA.cursor+sizeof.APPDATA*2], eax + mov [window_data + sizeof.WDATA + WDATA.cursor], eax + mov [window_data + sizeof.WDATA*2 + WDATA.cursor], eax ; from set_variables mov ax, [BOOT.y_res] @@ -1141,7 +1141,7 @@ align 64 rb 0x100000 - (($-bss_base) AND (0x100000-1)) ; align on 1MiB os_base: rb PAGE_SIZE window_data: rb sizeof.WDATA * 256 -CDDataBuf: rb 0x1000 +background_window = window_data + sizeof.WDATA idts rb (NUM_EXCEPTIONS + IRQ_RESERVED) * sizeof.idt_entry WIN_STACK rw 0x200 ; why not 0x100? WIN_POS rw 0x200 diff --git a/umka.h b/umka.h index 8bdfa14..433813a 100644 --- a/umka.h +++ b/umka.h @@ -173,7 +173,7 @@ typedef struct { static_assert(sizeof(process_information_t) == 0x400, "must be 0x400 bytes long"); -typedef struct { +typedef struct wdata { box_t box; uint32_t cl_workarea; uint32_t cl_titlebar; @@ -187,10 +187,18 @@ typedef struct { uint32_t shape_scale; char *caption; uint8_t caption_encoding; - uint8_t pad[3]; + uint8_t pad0[3]; + box_t saved_box; + void *cursor; + void *temp_cursor; + uint32_t draw_bgr_x; + uint32_t draw_bgr_y; + rect_t draw_data; + struct appdata *thread; + uint8_t pad1[12]; } __attribute__((packed)) wdata_t; -static_assert(sizeof(wdata_t) == 0x40, "must be 0x40 bytes long"); +static_assert(sizeof(struct wdata) == 0x80, "must be 0x80 bytes long"); typedef struct { uint32_t frame; @@ -900,7 +908,7 @@ typedef struct { static_assert(sizeof(proc_t) == 0x1400, "must be 0x1400 bytes long"); -typedef struct { +typedef struct appdata { char app_name[11]; uint8_t pad1[5]; @@ -910,7 +918,7 @@ typedef struct { void *exc_handler; // +32 uint32_t except_mask; // +36 void *pl0_stack; // +40 - void *cursor; // +44 + uint32_t pad2; // +44 event_t *fd_ev; // +48 event_t *bk_ev; // +52 appobj_t *fd_obj; // +56 @@ -927,36 +935,36 @@ typedef struct { void *tls_base; // +104 uint32_t event_mask; // +108 uint32_t tid; // +112 - uint32_t draw_bgr_x; // +116 - uint32_t draw_bgr_y; // +120 + uint32_t pad3; // +116 + uint32_t pad4; // +120 uint8_t state; // +124 uint8_t wnd_number; // +125 - uint8_t pad2[2]; // +126 - uint32_t pad3; // +128 - uint32_t pad4; // +132 - uint32_t mem_start; // +136 + uint16_t pad5; // +126 + struct wdata *window; // +128 + uint32_t pad6; // +132 + uint32_t pad7; // +136 uint32_t counter_sum; // +140 - box_t saved_box; // +144 + uint32_t pad8[4]; // +144 uint32_t *ipc_start; // +160 size_t ipc_size; // +164 uint32_t occurred_events; // +168 uint32_t debugger_slot; // +172 uint32_t terminate_protection; // +176 uint8_t keyboard_mode; // +180 - uint8_t pad5[3]; // +181 + uint8_t pad9[3]; // +181 char *exec_params; // +184 void *dbg_event_mem; // +188 dbg_regs_t dbg_regs; // +192 - uint32_t pad6; // +212 - uint32_t pad7[4]; // +216 + uint32_t pad10; // +212 + uint32_t pad11[4]; // +216 uint32_t priority; // +232 lhead_t in_schedule; // +236 uint32_t counter_add; // +244 uint32_t cpu_usage; // +248 - uint32_t pad8; // +252 + uint32_t pad12; // +252 } appdata_t; -static_assert(sizeof(appdata_t) == 256, "must be 0x100 bytes long"); +static_assert(sizeof(struct appdata) == 256, "must be 0x100 bytes long"); extern uint8_t kos_redraw_background; extern size_t kos_task_count;