add sys_add_three_integers
This commit is contained in:
parent
f5117281a3
commit
090b997d35
@ -114,6 +114,12 @@ void syscall(struct trapframe *tf) {
|
|||||||
err = sys_printchar((char)tf->tf_a0);
|
err = sys_printchar((char)tf->tf_a0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SYS_add_three_integers:
|
||||||
|
err = sys_add_three_integers((int)tf->tf_a0, (int)tf->tf_a1, (int)tf->tf_a2,
|
||||||
|
&retval);
|
||||||
|
kprintf("%d\n", retval);
|
||||||
|
break;
|
||||||
|
|
||||||
/* Add stuff here */
|
/* Add stuff here */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -380,6 +380,7 @@ file syscall/loadelf.c
|
|||||||
file syscall/runprogram.c
|
file syscall/runprogram.c
|
||||||
file syscall/time_syscalls.c
|
file syscall/time_syscalls.c
|
||||||
file syscall/printchar.c
|
file syscall/printchar.c
|
||||||
|
file syscall/add_three_integers.c
|
||||||
|
|
||||||
#
|
#
|
||||||
# Startup and initialization
|
# Startup and initialization
|
||||||
|
|||||||
@ -95,6 +95,7 @@
|
|||||||
// #define SYS_setpriority 39
|
// #define SYS_setpriority 39
|
||||||
// (process groups, sessions, and job control)
|
// (process groups, sessions, and job control)
|
||||||
#define SYS_printchar 41
|
#define SYS_printchar 41
|
||||||
|
#define SYS_add_three_integers 42
|
||||||
// #define SYS_getpgid 40
|
// #define SYS_getpgid 40
|
||||||
// #define SYS_setpgid 41
|
// #define SYS_setpgid 41
|
||||||
// #define SYS_getsid 42
|
// #define SYS_getsid 42
|
||||||
|
|||||||
@ -59,4 +59,6 @@ int sys___time(userptr_t user_seconds, userptr_t user_nanoseconds);
|
|||||||
|
|
||||||
int sys_printchar(char c);
|
int sys_printchar(char c);
|
||||||
|
|
||||||
|
int sys_add_three_integers(int a, int b, int c, int *ret);
|
||||||
|
|
||||||
#endif /* _SYSCALL_H_ */
|
#endif /* _SYSCALL_H_ */
|
||||||
|
|||||||
8
kern/syscall/add_three_integers.c
Normal file
8
kern/syscall/add_three_integers.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <types.h>
|
||||||
|
#include <lib.h>
|
||||||
|
#include <syscall.h>
|
||||||
|
|
||||||
|
int sys_add_three_integers(int a, int b, int c, int *ret) {
|
||||||
|
*ret = a + b + c;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@ -157,5 +157,6 @@ char *getcwd(char *buf, size_t buflen); /* calls __getcwd */
|
|||||||
time_t time(time_t *seconds); /* calls __time */
|
time_t time(time_t *seconds); /* calls __time */
|
||||||
|
|
||||||
int printchar(char c);
|
int printchar(char c);
|
||||||
|
int add_three_integers(int a, int b, int c);
|
||||||
|
|
||||||
#endif /* _UNISTD_H_ */
|
#endif /* _UNISTD_H_ */
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
TOP=../..
|
TOP=../..
|
||||||
.include "$(TOP)/mk/os161.config.mk"
|
.include "$(TOP)/mk/os161.config.mk"
|
||||||
|
|
||||||
SUBDIRS=add argtest badcall bigexec bigfile bigfork bigseek bloat conman \
|
SUBDIRS=add add_three_integers argtest badcall bigexec bigfile bigfork bigseek bloat conman \
|
||||||
crash ctest dirconc dirseek dirtest f_test factorial farm faulter \
|
crash ctest dirconc dirseek dirtest f_test factorial farm faulter \
|
||||||
filetest forkbomb forktest frack hash hog huge \
|
filetest forkbomb forktest frack hash hog huge \
|
||||||
malloctest matmult multiexec palin parallelvm poisondisk printchartest psort \
|
malloctest matmult multiexec palin parallelvm poisondisk printchartest psort \
|
||||||
|
|||||||
10
userland/testbin/add_three_integers/Makefile
Normal file
10
userland/testbin/add_three_integers/Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Makefile for add_three_integers
|
||||||
|
|
||||||
|
TOP=../../..
|
||||||
|
.include "$(TOP)/mk/os161.config.mk"
|
||||||
|
|
||||||
|
PROG=add_three_integers
|
||||||
|
SRCS=add_three_integers.c
|
||||||
|
BINDIR=/testbin
|
||||||
|
|
||||||
|
.include "$(TOP)/mk/os161.prog.mk"
|
||||||
10
userland/testbin/add_three_integers/add_three_integers.c
Normal file
10
userland/testbin/add_three_integers/add_three_integers.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
extern int add_three_integers(int a, int b, int c);
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
add_three_integers(3, 5, 2); // should output 10
|
||||||
|
add_three_integers(-5, 3, 1); // should output -1
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user