From eec47b6d75bb62c2562c701c78d0c6774493f9a5 Mon Sep 17 00:00:00 2001 From: Tonight <7516048+ljp_tonight@user.noreply.gitee.com> Date: Mon, 19 Jul 2021 02:21:06 +0000 Subject: [PATCH] fix linking error concerning inline --- include/asm/segment.h | 4 ++-- include/unistd.h | 1 + kernel/blk_drv/floppy.c | 2 +- kernel/blk_drv/ll_rw_blk.c | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/asm/segment.h b/include/asm/segment.h index e408ca7..8f13d85 100644 --- a/include/asm/segment.h +++ b/include/asm/segment.h @@ -1,13 +1,13 @@ #ifndef _SEGMENT_H #define _SEGMENT_H -extern inline unsigned char get_fs_byte(const char * addr) { +static inline unsigned char get_fs_byte(const char * addr) { unsigned register char _v; __asm__ ("movb %%fs:%1,%0":"=r" (_v):"m" (*addr)); return _v; } -extern inline void put_fs_byte(char val,char *addr) { +static inline void put_fs_byte(char val,char *addr) { __asm__ ("movb %0,%%fs:%1"::"r" (val),"m" (*addr)); } diff --git a/include/unistd.h b/include/unistd.h index b12c949..815c17b 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -152,6 +152,7 @@ extern int errno; int dup(int fildes); int fork(); int fstat(); +int setup(void *BIOS); int open(const char * filename, int flag, ...); int write(int fildes, const char * buf, off_t count); int read(int fildes, const char * buf, off_t count); diff --git a/kernel/blk_drv/floppy.c b/kernel/blk_drv/floppy.c index 8a11b10..9e559e5 100644 --- a/kernel/blk_drv/floppy.c +++ b/kernel/blk_drv/floppy.c @@ -166,7 +166,7 @@ void rw_interrupt() { do_fd_request(); } -inline void setup_rw_floppy() { +void setup_rw_floppy() { printk("setup_rw_floppy\n"); setup_DMA(); do_floppy = rw_interrupt; diff --git a/kernel/blk_drv/ll_rw_blk.c b/kernel/blk_drv/ll_rw_blk.c index ed35dd8..25a3c5e 100644 --- a/kernel/blk_drv/ll_rw_blk.c +++ b/kernel/blk_drv/ll_rw_blk.c @@ -21,7 +21,7 @@ struct blk_dev_struct blk_dev[NR_BLK_DEV] = { int * blk_size[NR_BLK_DEV] = { NULL, NULL, }; -inline void lock_buffer(struct buffer_head * bh) { +void lock_buffer(struct buffer_head * bh) { cli(); while (bh->b_lock) sleep_on(&bh->b_wait); @@ -29,7 +29,7 @@ inline void lock_buffer(struct buffer_head * bh) { sti(); } -inline void unlock_buffer(struct buffer_head * bh) { +void unlock_buffer(struct buffer_head * bh) { if (!bh->b_lock) printk("ll_rw_block.c: buffer not locked\n\r"); bh->b_lock = 0; -- Gitee