This commit is contained in:
Yanyan Jiang 2017-04-20 13:17:16 -04:00
parent 0819fb62d9
commit be2a48a154
6 changed files with 31 additions and 10 deletions

View File

@ -1,6 +1,6 @@
ifneq ($(MAKECMDGOALS), clean) ifneq ($(MAKECMDGOALS), clean)
ifeq ($(ARCH), ) ifeq ($(ARCH), )
$(error "Usage: make [play|clean] ARCH=[mips32-npc|x86-linux|x86-qemu] APP=[hello,video,...]") $(error "Usage: make [play|clean] ARCH=[mips32-npc|x86-linux|x86-qemu] APP=[hello|video|...]")
endif endif
endif endif
@ -34,15 +34,15 @@ APP_DEP = $(addsuffix .d, $(basename $(APP_SRC)))
# Klib archive # Klib archive
KLIB = ./build/libkern-$(ARCH).a KLIB = ./build/libkern-$(ARCH).a
KLIB_SRC = $(shell find -L ./klib/src -name "*.c" -o -name "*.cpp" -o -name "*.S") KLIB_SRC = $(shell find -L ./klib/ -name "*.c" -o -name "*.cpp" -o -name "*.S")
KLIB_OBJ = $(addsuffix .o, $(basename $(APP_SRC))) KLIB_OBJ = $(addsuffix .o, $(basename $(KLIB_SRC)))
KLIB_DEP = $(addsuffix .d, $(basename $(APP_SRC))) KLIB_DEP = $(addsuffix .d, $(basename $(KLIB_SRC)))
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Basic compilation flags # Basic compilation flags
CFLAGS += -std=gnu99 -I ./am/ -I./$(AM_PATH)/include -I./$(APP_PATH)/include -O2 -MD -Wall -Werror -ggdb CFLAGS += -std=gnu99 -I ./am/ -I./$(AM_PATH)/include -I./klib -I./$(APP_PATH)/include -O2 -MD -Wall -Werror -ggdb
CXXFLAGS += -std=c++11 -I ./am/ -I./$(AM_PATH)/include -I./$(APP_PATH)/include -O2 -MD -Wall -Werror -ggdb CXXFLAGS += -std=c++11 -I ./am/ -I./$(AM_PATH)/include -I./klib -I./$(APP_PATH)/include -O2 -MD -Wall -Werror -ggdb
ASFLAGS += -I ./am/ -I./$(AM_PATH)/include -I./$(APP_PATH)/include -MD ASFLAGS += -I ./am/ -I./$(AM_PATH)/include -I./$(APP_PATH)/include -MD
# Arch-dependent compilation flags # Arch-dependent compilation flags
@ -81,6 +81,8 @@ $(APP_LIB): $(APP_OBJ)
ar rcs $(APP_LIB) $(APP_OBJ) ar rcs $(APP_LIB) $(APP_OBJ)
-include $(APP_DEP) -include $(APP_DEP)
# -----------------------------------------------------------------------------
.PHONY: play clean .PHONY: play clean
play: $(AM_LIB) $(DEST) play: $(AM_LIB) $(DEST)

View File

@ -86,7 +86,7 @@ void _pte_init(void*(*palloc)(), void (*pfree)(void*));
void _protect(_Protect *p); void _protect(_Protect *p);
void _release(_Protect *p); void _release(_Protect *p);
void _map(_Protect *p, void *va, void *pa); void _map(_Protect *p, void *va, void *pa);
void _ummap(_Protect *p, void *va); void _unmap(_Protect *p, void *va);
void _switch(_Protect *p); void _switch(_Protect *p);
_RegSet *_umake(_Area ustack, _Area kstack, void *entry, int argc, char **argv); _RegSet *_umake(_Area ustack, _Area kstack, void *entry, int argc, char **argv);

View File

@ -1,5 +1,6 @@
#include <am.h> #include <am.h>
#include <video.h> #include <video.h>
#include <klib.h>
_Pixel canvas[N][N]; _Pixel canvas[N][N];
bool used[N][N]; bool used[N][N];
@ -66,7 +67,6 @@ int main() {
_trm_init(); _trm_init();
_ioe_init(); _ioe_init();
ulong last = 0; ulong last = 0;
while (true) { while (true) {

View File

@ -1,2 +0,0 @@
// the implementation goes here
// may need other files

View File

@ -5,9 +5,21 @@
#ifndef __KLIB_H__ #ifndef __KLIB_H__
#define __KLIB_H__ #define __KLIB_H__
#include <am.h>
#ifdef __cplusplus
extern "C" {
#endif
// We're expecting: // We're expecting:
// assert, printf, sprintf // assert, printf, sprintf
// memcpy, memset, strcpy, strlen, itoa, atoi, ... // memcpy, memset, strcpy, strlen, itoa, atoi, ...
// kalloc, kree // kalloc, kree
size_t strlen(const char *s);
#ifdef __cplusplus
}
#endif
#endif #endif

9
klib/string.c Normal file
View File

@ -0,0 +1,9 @@
#include <klib.h>
size_t strlen(const char *s) {
size_t sz = 0;
for (; *s; s ++) {
sz ++;
}
return sz;
}