misazhu / ewokos Goto Github PK
View Code? Open in Web Editor NEWA microkernel os for ARM, well ported on Raspberry Pi(s)
License: Apache License 2.0
A microkernel os for ARM, well ported on Raspberry Pi(s)
License: Apache License 2.0
https://github.com/MisaZhu/EwokOS/blob/master/system/basic/libs/sys/src/syscall.c
如果用户态的进程也运行在sys模式的话似乎没有问题。但是sys模式下用户态的进程可以修改ttbr,也就是意味着可以改页表。是不是不安全呢?
Can the system call pass 5 parameters?
Error:
~/Documents/Git/EwokOS/system master make
cd basic;make
cd ./libs/libc;make
arm-none-eabi-gcc -Wstrict-prototypes -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -fno-builtin-printf -fno-builtin-memset -fno-builtin-snprintf -fno-builtin-sprintf -fno-builtin-fprintf -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -std=c99 -O2 -I ../../../build/include -Iinclude -Isys/include -c -o sys/src/vfs.o sys/src/vfs.c
sys/src/vfs.c:386:5: error: conflicting types for 'vfs_create'
int vfs_create(const char* fname, fsinfo_t* ret, int type, bool vfs_node_only) {
^
In file included from sys/src/vfs.c:1:0:
../../../build/include/sys/vfs.h:35:11: note: previous declaration of 'vfs_create' was here
int vfs_create(const char* fname, fsinfo_t* ret, int type);
^
make[2]: *** [sys/src/vfs.o] Error 1
make[1]: *** [basic_libs] Error 2
make: *** [basic_sys] Error 2
OS: Ubuntu 18.04 x86_64
Tool chain: sudo apt-get install qemu-system-arm gcc-arm-none-eabi
Steps:
arm-none-eabi-gcc -I. -O2 -Wstrict-prototypes -I ../lib/include -I lib/include -I ../kernel/include -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -fno-builtin-printf -fno-builtin-strcpy -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -std=c99 -I dev/sramdisk -c -o dev/sramdisk/sramdisk.o dev/sramdisk/sramdisk.c
arm-none-eabi-ld -Ttext=100 dev/sramdisk/*.o lib/libewoklibc.a ../kernel/lib/kstring.o ../kernel/lib/basic_math.o ../kernel/lib/device.o ../kernel/lib/sconf_parse.o ../kernel/lib/trunk.o ../kernel/lib/tstr.o ../kernel/lib/vprintf.o ../kernel/arch/arm/common/memcpy.o -o build/sbin/dev/sramdisk
dev/sramdisk/sramdisk.o: In function `sramdisk_open':
**sramdisk.c:(.text+0x268): undefined reference to `calloc'**
dev/sramdisk/build.mk:8: recipe for target 'build/sbin/dev/sramdisk' failed
make: *** [build/sbin/dev/sramdisk] Error 1
arm-none-eabi-objdump -D dev/sramdisk/sramdisk.o > sramdisk.o.objdump
145 00000208 <sramdisk_open>:
146 208: e1a0c00d mov ip, sp
147 20c: e92dd830 push {r4, r5, fp, ip, lr, pc}
148 210: e24cb004 sub fp, ip, #4
149 214: e24dd020 sub sp, sp, #32
150 218: e24b4034 sub r4, fp, #52 ; 0x34
151 21c: e1a02001 mov r2, r1
152 220: e1a01000 mov r1, r0
153 224: e1a03004 mov r3, r4
154 228: e3a00026 mov r0, #38 ; 0x26
155 22c: ebfffffe bl 0 <syscall3>
156 230: e3500000 cmp r0, #0
157 234: 1a000011 bne 280 <sramdisk_open+0x78>
158 238: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
159 23c: e3530000 cmp r3, #0
160 240: 01a00003 moveq r0, r3
161 244: 0a000002 beq 254 <sramdisk_open+0x4c>
162 248: e51b5018 ldr r5, [fp, #-24] ; 0xffffffe8
163 24c: e3550000 cmp r5, #0
164 250: 0a000002 beq 260 <sramdisk_open+0x58>
165 254: e24bd014 sub sp, fp, #20
166 258: e89d6830 ldm sp, {r4, r5, fp, sp, lr}
167 25c: e12fff1e bx lr
168 260: e3a01001 mov r1, #1
169 264: e3a0000c mov r0, #12
**170 268: ebfffffe bl 0 <calloc>**
171 26c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8
172 270: e1a00004 mov r0, r4
173 274: ebfffffe bl 0 <fs_update>
174 278: e1a00005 mov r0, r5
175 27c: eafffff4 b 254 <sramdisk_open+0x4c>
176 280: e3e00000 mvn r0, #0
177 284: eafffff2 b 254 <sramdisk_open+0x4c>
Checked arm-none-eabi-gcc -E, didn't find any clue.
I'm still trying to find out why the malloc() in the sramdisk_open() changed to calloc().
I try to build Lua (version 5.4.1) into EwokOS, it fail. The errors:
arm-none-eabi-gcc -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -DLUA_32BITS -fno-builtin-printf -fno-builtin-memset -fno-builtin-snprintf -fno-builtin-sprintf -fno-builtin-fprintf -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -fno-exceptions -O2 -c -o ltablib.o ltablib.c
arm-none-eabi-gcc -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -DLUA_32BITS -fno-builtin-printf -fno-builtin-memset -fno-builtin-snprintf -fno-builtin-sprintf -fno-builtin-fprintf -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -fno-exceptions -O2 -c -o lutf8lib.o lutf8lib.c
arm-none-eabi-gcc -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -DLUA_32BITS -fno-builtin-printf -fno-builtin-memset -fno-builtin-snprintf -fno-builtin-sprintf -fno-builtin-fprintf -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -fno-exceptions -O2 -c -o linit.o linit.c
arm-none-eabi-ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
arm-none-eabi-ranlib liblua.a
arm-none-eabi-gcc -marm -pedantic -Wall -Wextra -msoft-float -fPIC -mapcs-frame -DLUA_32BITS -fno-builtin-printf -fno-builtin-memset -fno-builtin-snprintf -fno-builtin-sprintf -fno-builtin-fprintf -Wno-overlength-strings -fno-builtin-exit -fno-builtin-stdio -fno-exceptions -O2 -c -o lua.o lua.c
arm-none-eabi-gcc -o lua -L../../../build/lib -lnosys lua.o liblua.a -lm -Wl,-E -ldl -static
/usr/local/Cellar/gcc-arm-none-eabi-49/20150925/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: cannot find -ldl
collect2: error: ld returned 1 exit status
make[2]: *** [lua] Error 1
make[1]: *** [linux-noreadline] Error 2
make: *** [linux] Error 2
The Makefile I modified is
Makefile.rename.txt
src/Makefile.rename.txt
How do it right, pls give me some guideline.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.