Rev 3606 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3606 | Rev 4377 | ||
---|---|---|---|
Line 47... | Line 47... | ||
47 | 47 | ||
48 | // Temporary: service and method names |
48 | // Temporary: service and method names |
49 | #include "proto.h" |
49 | #include "proto.h" |
50 | #include <ipc/services.h> |
50 | #include <ipc/services.h> |
51 | #include "../../srv/vfs/vfs.h" |
51 | #include "../../srv/vfs/vfs.h" |
52 | #include "../../srv/console/console.h" |
52 | #include <ipc/console.h> |
53 | 53 | ||
54 | #include "syscalls.h" |
54 | #include "syscalls.h" |
55 | #include "ipcp.h" |
55 | #include "ipcp.h" |
56 | #include "errors.h" |
56 | #include "errors.h" |
57 | #include "trace.h" |
57 | #include "trace.h" |
Line 517... | Line 517... | ||
517 | { |
517 | { |
518 | loader_t *ldr; |
518 | loader_t *ldr; |
519 | int rc; |
519 | int rc; |
520 | 520 | ||
521 | /* Spawn a program loader */ |
521 | /* Spawn a program loader */ |
522 | ldr = loader_spawn(path); |
522 | ldr = loader_connect(); |
523 | if (ldr == NULL) |
523 | if (ldr == NULL) |
524 | return 0; |
524 | return 0; |
525 | 525 | ||
526 | /* Get task ID. */ |
526 | /* Get task ID. */ |
527 | rc = loader_get_task_id(ldr, task_id); |
527 | rc = loader_get_task_id(ldr, task_id); |
Line 621... | Line 621... | ||
621 | val_type_t resp_def[OPER_MAX_ARGS] = { |
621 | val_type_t resp_def[OPER_MAX_ARGS] = { |
622 | V_INTEGER, |
622 | V_INTEGER, |
623 | V_INTEGER, |
623 | V_INTEGER, |
624 | V_INTEGER, |
624 | V_INTEGER, |
625 | V_INTEGER, |
625 | V_INTEGER, |
626 | V_INTEGER |
626 | V_INTEGER |
627 | }; |
627 | }; |
628 | 628 | ||
629 | next_thread_id = 1; |
629 | next_thread_id = 1; |
630 | paused = 0; |
630 | paused = 0; |
631 | 631 | ||
Line 640... | Line 640... | ||
640 | proto_add_oper(p, VFS_TRUNCATE, o); |
640 | proto_add_oper(p, VFS_TRUNCATE, o); |
641 | o = oper_new("mount", 2, arg_def, V_ERRNO, 0, resp_def); |
641 | o = oper_new("mount", 2, arg_def, V_ERRNO, 0, resp_def); |
642 | proto_add_oper(p, VFS_MOUNT, o); |
642 | proto_add_oper(p, VFS_MOUNT, o); |
643 | /* o = oper_new("unmount", 0, arg_def); |
643 | /* o = oper_new("unmount", 0, arg_def); |
644 | proto_add_oper(p, VFS_UNMOUNT, o);*/ |
644 | proto_add_oper(p, VFS_UNMOUNT, o);*/ |
- | 645 | o = oper_new("open", 2, arg_def, V_INT_ERRNO, 0, resp_def); |
|
- | 646 | proto_add_oper(p, VFS_OPEN, o); |
|
- | 647 | o = oper_new("close", 1, arg_def, V_ERRNO, 0, resp_def); |
|
- | 648 | proto_add_oper(p, VFS_CLOSE, o); |
|
- | 649 | o = oper_new("seek", 3, arg_def, V_ERRNO, 0, resp_def); |
|
- | 650 | proto_add_oper(p, VFS_SEEK, o); |
|
- | 651 | o = oper_new("mkdir", 1, arg_def, V_ERRNO, 0, resp_def); |
|
- | 652 | proto_add_oper(p, VFS_MKDIR, o); |
|
- | 653 | o = oper_new("unlink", 0, arg_def, V_ERRNO, 0, resp_def); |
|
- | 654 | proto_add_oper(p, VFS_UNLINK, o); |
|
- | 655 | o = oper_new("rename", 0, arg_def, V_ERRNO, 0, resp_def); |
|
- | 656 | proto_add_oper(p, VFS_RENAME, o); |
|
645 | 657 | ||
646 | proto_register(SERVICE_VFS, p); |
658 | proto_register(SERVICE_VFS, p); |
647 | 659 | ||
648 | p = proto_new("console"); |
660 | p = proto_new("console"); |
- | 661 | resp_def[0] = V_INTEGER; resp_def[1] = V_INTEGER; |
|
649 | resp_def[0] = V_CHAR; |
662 | resp_def[2] = V_INTEGER; resp_def[3] = V_CHAR; |
650 | o = oper_new("getchar", 0, arg_def, V_INTEGER, 2, resp_def); |
663 | o = oper_new("getkey", 0, arg_def, V_ERRNO, 4, resp_def); |
651 | proto_add_oper(p, CONSOLE_GETCHAR, o); |
664 | proto_add_oper(p, CONSOLE_GETKEY, o); |
652 | 665 | ||
653 | arg_def[0] = V_CHAR; |
666 | arg_def[0] = V_CHAR; |
654 | o = oper_new("putchar", 1, arg_def, V_VOID, 0, resp_def); |
667 | o = oper_new("putchar", 1, arg_def, V_VOID, 0, resp_def); |
655 | proto_add_oper(p, CONSOLE_PUTCHAR, o); |
668 | proto_add_oper(p, CONSOLE_PUTCHAR, o); |
- | 669 | o = oper_new("write", 0, arg_def, V_VOID, 0, resp_def); |
|
- | 670 | proto_add_oper(p, CONSOLE_WRITE, o); |
|
656 | o = oper_new("clear", 0, arg_def, V_VOID, 0, resp_def); |
671 | o = oper_new("clear", 0, arg_def, V_VOID, 0, resp_def); |
657 | proto_add_oper(p, CONSOLE_CLEAR, o); |
672 | proto_add_oper(p, CONSOLE_CLEAR, o); |
658 | 673 | ||
659 | arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; |
674 | arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; |
660 | o = oper_new("goto", 2, arg_def, V_VOID, 0, resp_def); |
675 | o = oper_new("goto", 2, arg_def, V_VOID, 0, resp_def); |
Line 664... | Line 679... | ||
664 | o = oper_new("getsize", 0, arg_def, V_INTEGER, 2, resp_def); |
679 | o = oper_new("getsize", 0, arg_def, V_INTEGER, 2, resp_def); |
665 | proto_add_oper(p, CONSOLE_GETSIZE, o); |
680 | proto_add_oper(p, CONSOLE_GETSIZE, o); |
666 | o = oper_new("flush", 0, arg_def, V_VOID, 0, resp_def); |
681 | o = oper_new("flush", 0, arg_def, V_VOID, 0, resp_def); |
667 | proto_add_oper(p, CONSOLE_FLUSH, o); |
682 | proto_add_oper(p, CONSOLE_FLUSH, o); |
668 | 683 | ||
669 | arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; |
684 | arg_def[0] = V_INTEGER; |
670 | o = oper_new("set_style", 2, arg_def, V_INTEGER, 0, resp_def); |
685 | o = oper_new("set_style", 1, arg_def, V_VOID, 0, resp_def); |
671 | proto_add_oper(p, CONSOLE_SET_STYLE, o); |
686 | proto_add_oper(p, CONSOLE_SET_STYLE, o); |
- | 687 | arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; arg_def[2] = V_INTEGER; |
|
- | 688 | o = oper_new("set_color", 3, arg_def, V_VOID, 0, resp_def); |
|
- | 689 | proto_add_oper(p, CONSOLE_SET_COLOR, o); |
|
- | 690 | arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; |
|
- | 691 | o = oper_new("set_rgb_color", 2, arg_def, V_VOID, 0, resp_def); |
|
- | 692 | proto_add_oper(p, CONSOLE_SET_RGB_COLOR, o); |
|
672 | o = oper_new("cursor_visibility", 1, arg_def, V_VOID, 0, resp_def); |
693 | o = oper_new("cursor_visibility", 1, arg_def, V_VOID, 0, resp_def); |
673 | proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o); |
694 | proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o); |
674 | 695 | ||
675 | proto_console = p; |
696 | proto_console = p; |
676 | proto_register(SERVICE_CONSOLE, p); |
697 | proto_register(SERVICE_CONSOLE, p); |