From bf28c95b75b7e092b0a909f57a006427ad42045a Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Wed, 14 Sep 2011 23:41:34 -0700 Subject: [PATCH 01/13] add additional debug messages --- drivers/net/rckemac.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/rckemac.c b/drivers/net/rckemac.c index 77659309..c00ae77e 100644 --- a/drivers/net/rckemac.c +++ b/drivers/net/rckemac.c @@ -227,6 +227,7 @@ static err_t rckemacif_output(struct netif* netif, struct pbuf* p) rckemacif->tx_write_offset = 1; packets = CLINE_PACKETS(p->tot_len + 2); + LWIP_DEBUGF(NETIF_DEBUG, ("TX packets: %d\n", packets)); read_offset = read_emac(rckemacif->num_emac, EMAC_TX_CONTROL+EMAC_TX_BUFFER_READ_OFFSET, rckemacif->core); #if 1 @@ -317,7 +318,7 @@ again: *((int*)RCCE_fool_write_combine_buffer) = 1; /* set new write offset */ - //LWIP_DEBUGF(NETIF_DEBUG, ("Update tx write offset: %d (read offset %d)\n", rckemacif->tx_write_offset, read_offset)); + LWIP_DEBUGF(NETIF_DEBUG, ("Update tx write offset: %d (read offset %d)\n", rckemacif->tx_write_offset, read_offset)); write_emac(rckemacif->num_emac, EMAC_TX_CONTROL+EMAC_TX_BUFFER_WRITE_OFFSET, rckemacif->core, rckemacif->tx_write_offset); #if ETH_PAD_SIZE @@ -335,7 +336,7 @@ static void rckemacif_input(struct netif* netif, struct pbuf* p) err_t err; /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; + ethhdr = (struct eth_hdr *) p->payload; switch (htons(ethhdr->type)) { /* IP or ARP packet? */ @@ -364,7 +365,7 @@ static void rckemacif_rx_handler(struct netif* netif, unsigned int write_offset) unsigned short read_offset = rckemacif->rx_read_offset; volatile void *addr = NULL; uint16_t i, length = 0; - struct pbuf *p; + struct pbuf *p = NULL; struct pbuf* q; if (write_offset > rckemacif->rx_buffer_max) { @@ -476,7 +477,6 @@ out: #if ETH_PAD_SIZE pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ #endif - rckemacif_input(netif, p); LINK_STATS_INC(link.recv); } else { LWIP_DEBUGF(NETIF_DEBUG, ("rckemacif_rx_inthandler: not enough memory!\n")); @@ -490,6 +490,11 @@ rxDone: write_emac(rckemacif->num_emac, EMAC_RX_CONTROL + EMAC_RX_BUFFER_READ_OFFSET, rckemacif->core, read_offset); rckemacif->rx_read_offset = read_offset; + if (p) { + rckemacif_input(netif, p); + p = NULL; + } + if (read_offset != write_offset) goto again; } From 0bec94d2a5eea361a2b247c774584e7d2ebd090f Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 03:15:15 -0700 Subject: [PATCH 02/13] reduce the TCP segment size to increase the performance on the SCC --- lwip/src/include/lwipopts.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lwip/src/include/lwipopts.h b/lwip/src/include/lwipopts.h index d21fe32c..9e9b36e8 100644 --- a/lwip/src/include/lwipopts.h +++ b/lwip/src/include/lwipopts.h @@ -37,7 +37,11 @@ /** * LWIP_DHCP==1: Enable DHCP module. */ +#ifdef CONFIG_ROCKCREEK +#define LWIP_DHCP 0 +#else #define LWIP_DHCP 1 +#endif /** * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. @@ -68,7 +72,7 @@ * when opening a connection. For the transmit size, this MSS sets * an upper limit on the MSS advertised by the remote host. */ -#define TCP_MSS 1460 +#define TCP_MSS 1440 /** * TCP_SND_BUF: TCP sender buffer space (bytes). From fdc9ad964140c04cffc43e316564cee41e30ed6e Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 03:18:07 -0700 Subject: [PATCH 03/13] remove some obsolete messages --- drivers/net/rckemac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/rckemac.c b/drivers/net/rckemac.c index c00ae77e..8f22e0a5 100644 --- a/drivers/net/rckemac.c +++ b/drivers/net/rckemac.c @@ -227,7 +227,7 @@ static err_t rckemacif_output(struct netif* netif, struct pbuf* p) rckemacif->tx_write_offset = 1; packets = CLINE_PACKETS(p->tot_len + 2); - LWIP_DEBUGF(NETIF_DEBUG, ("TX packets: %d\n", packets)); + //LWIP_DEBUGF(NETIF_DEBUG, ("TX packets: %d\n", packets)); read_offset = read_emac(rckemacif->num_emac, EMAC_TX_CONTROL+EMAC_TX_BUFFER_READ_OFFSET, rckemacif->core); #if 1 @@ -318,7 +318,7 @@ again: *((int*)RCCE_fool_write_combine_buffer) = 1; /* set new write offset */ - LWIP_DEBUGF(NETIF_DEBUG, ("Update tx write offset: %d (read offset %d)\n", rckemacif->tx_write_offset, read_offset)); + //LWIP_DEBUGF(NETIF_DEBUG, ("Update tx write offset: %d (read offset %d)\n", rckemacif->tx_write_offset, read_offset)); write_emac(rckemacif->num_emac, EMAC_TX_CONTROL+EMAC_TX_BUFFER_WRITE_OFFSET, rckemacif->core, rckemacif->tx_write_offset); #if ETH_PAD_SIZE From 414078b1b666bbbae047150e15ac7244cc2a0e10 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 03:18:38 -0700 Subject: [PATCH 04/13] remove some obsolete debug messages --- kernel/netio.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/kernel/netio.c b/kernel/netio.c index 7dc053a7..d377745e 100644 --- a/kernel/netio.c +++ b/kernel/netio.c @@ -47,7 +47,6 @@ typedef struct static int nPort = DEFAULTPORT; static const int sobufsize = 131072; static struct in_addr addr_local; -static int bTimeOver = 0; static int send_data(int socket, void *buffer, size_t size, int flags) { @@ -139,7 +138,7 @@ static int TCPServer(void* arg) if ((err = bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server))) < 0) { kprintf("bind failed: %d\n", err); - close(server); + closesocket(server); kfree(cBuffer, TMAXSIZE); return -1; } @@ -147,7 +146,7 @@ static int TCPServer(void* arg) if ((err = listen(server, 2)) != 0) { kprintf("listen failed: %d\n", err); - close(server); + closesocket(server); kfree(cBuffer, TMAXSIZE); return -1; } @@ -240,11 +239,10 @@ static int TCPServer(void* arg) nByte += rc; } - kputs("B"); nData += ctl.data; - } while(((rdtsc()-start)/(uint64_t)freq) < 6000000ULL /*= 6s */); + end = rdtsc(); + } while((end-start)/freq < 6000000ULL /* = 6s */); -kputs("AAAA"); cBuffer[0] = 1; if (send_data(client, cBuffer, ctl.data, 0)) @@ -258,13 +256,13 @@ kputs("AAAA"); kprintf("\nDone.\n"); - close(client); + closesocket(client); if (rc < 0) break; } - close(server); + closesocket(server); kfree(cBuffer, TMAXSIZE); return 0; From 0ddb36ca492d72e0530a803ccaaaed42cc31ae32 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 03:19:21 -0700 Subject: [PATCH 05/13] add additional debug message --- lwip/src/arch/sys_arch.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lwip/src/arch/sys_arch.c b/lwip/src/arch/sys_arch.c index 5b90bf66..9eb19c7b 100644 --- a/lwip/src/arch/sys_arch.c +++ b/lwip/src/arch/sys_arch.c @@ -216,7 +216,9 @@ err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg) int err; err = mailbox_ptr_trypost(&mbox->mailbox, msg); - //LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_trypost: %d"\n, err)); + if (err != 0) { + LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_trypost: %d"\n, err)); + } return err; } From cc806a129b8ce57e5f6c261e65f523dfcca5487f Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 07:05:59 -0700 Subject: [PATCH 06/13] remove typos --- lwip/src/arch/sys_arch.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lwip/src/arch/sys_arch.c b/lwip/src/arch/sys_arch.c index 9eb19c7b..486d2faa 100644 --- a/lwip/src/arch/sys_arch.c +++ b/lwip/src/arch/sys_arch.c @@ -19,9 +19,9 @@ #include #include +#include "lwip/opt.h" #include "lwip/debug.h" #include "lwip/sys.h" -#include "lwip/opt.h" #include "lwip/stats.h" #ifndef TRUE @@ -87,7 +87,7 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, sys_thread_t tmp; err = create_kernel_task(&tmp, thread, arg, prio); - LWIP_DEBUGF(SYS_DEBUG, ("sys_thread_new: create_kernel_task %d, id = %u", err, tmp)); + LWIP_DEBUGF(SYS_DEBUG, ("sys_thread_new: create_kernel_task %d, id = %u\n", err, tmp)); return tmp; } @@ -196,6 +196,8 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t* mbox, void** msg) */ err_t sys_mbox_new(sys_mbox_t* mbox, int size) { + LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_new: create mailbox with the minimum size: %d\n", size)); + mbox->valid = TRUE; return mailbox_ptr_init(&mbox->mailbox); } @@ -217,7 +219,7 @@ err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg) err = mailbox_ptr_trypost(&mbox->mailbox, msg); if (err != 0) { - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_trypost: %d"\n, err)); + LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_trypost: %d\n", err)); } return err; From d552c8058c67b055e4f83c820f2845663a081b2c Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:12:14 +0200 Subject: [PATCH 07/13] remove obsolete files --- newlib/examples/test | 3 --- tools/Makefile | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 newlib/examples/test diff --git a/newlib/examples/test b/newlib/examples/test deleted file mode 100644 index e7cf92e9..00000000 --- a/newlib/examples/test +++ /dev/null @@ -1,3 +0,0 @@ -test -hallo -huso diff --git a/tools/Makefile b/tools/Makefile index ee97610b..b47cc898 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -7,7 +7,7 @@ LDFLGAS = DEFINES= NASM = nasm NASMFLAGS = -fbin -EXECFILES = $(shell find ../newlib/examples -perm -u+r+x -type f) ../newlib/examples/test +EXECFILES = $(shell find ../newlib/examples -perm -u+r+x -type f) # other implicit rules %.o : %.c From 98b4976cb464fadb743ebc8323faf31744a5c387 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:12:54 +0200 Subject: [PATCH 08/13] sync all syscall headers --- include/metalsvm/syscall.h | 6 ++++++ newlib/src/libgloss/metalsvm/syscall.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/include/metalsvm/syscall.h b/include/metalsvm/syscall.h index 70c6ff4c..04390311 100644 --- a/include/metalsvm/syscall.h +++ b/include/metalsvm/syscall.h @@ -74,6 +74,12 @@ extern "C" { #define __NR_recv 21 #define __NR_send 22 #define __NR_socket 23 +#define __NR_getsockopt 24 +#define __NR_setsockopt 25 +#define __NR_gethostbyname 26 +#define __NR_sendto 27 +#define __NR_recvfrom 28 +#define __NR_select 29 #ifdef __cplusplus } diff --git a/newlib/src/libgloss/metalsvm/syscall.h b/newlib/src/libgloss/metalsvm/syscall.h index 5bd58118..26acb507 100644 --- a/newlib/src/libgloss/metalsvm/syscall.h +++ b/newlib/src/libgloss/metalsvm/syscall.h @@ -63,6 +63,12 @@ extern "C" { #define __NR_recv 21 #define __NR_send 22 #define __NR_socket 23 +#define __NR_getsockopt 24 +#define __NR_setsockopt 25 +#define __NR_gethostbyname 26 +#define __NR_sendto 27 +#define __NR_recvfrom 28 +#define __NR_select 29 #define _STR(token) #token #define _SYSCALLSTR(x) "int $" _STR(x) " " From 41247d9c0900b3e0b562192fe75928a03f9cb8f3 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:17:25 +0200 Subject: [PATCH 09/13] add missing copyright statement --- newlib/examples/mshell.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/newlib/examples/mshell.c b/newlib/examples/mshell.c index 38c62947..9b23b201 100644 --- a/newlib/examples/mshell.c +++ b/newlib/examples/mshell.c @@ -1,6 +1,19 @@ /* * Copyright 2011 Marian Ohligs, Chair for Operating Systems, * RWTH Aachen University + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * */ #include From ce9edf6787933e171affdec6c80c06476cb4927b Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:35:03 +0200 Subject: [PATCH 10/13] switch back to the default tests --- kernel/tests.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/kernel/tests.c b/kernel/tests.c index 4666c8a0..232d8748 100644 --- a/kernel/tests.c +++ b/kernel/tests.c @@ -404,14 +404,14 @@ void* client_task(void* e) int test_init(void) { - char* argv[] = {"/bin/mshell", NULL}; -// char* argv[] = {"/bin/tests", NULL}; +// char* argv[] = {"/bin/mshell", NULL}; + char* argv[] = {"/bin/tests", NULL}; // char* server_argv[] = {"/bin/server", "6789", NULL}; // char* client_argv[] = {"/bin/client", "127.0.0.1", "6789", NULL}; - //sem_init(&producing, 1); - //sem_init(&consuming, 0); - //mailbox_int32_init(&mbox); + sem_init(&producing, 1); + sem_init(&consuming, 0); + mailbox_int32_init(&mbox); #if defined(CONFIG_LWIP) && defined(CONFIG_ROCKCREEK) @@ -426,16 +426,17 @@ int test_init(void) // create_kernel_task(NULL,client_task,NULL); #endif - //create_kernel_task(NULL, foo, "Hello from foo1", NORMAL_PRIO); - //create_kernel_task(NULL, join_test, NULL, NORMAL_PRIO); - + create_kernel_task(NULL, foo, "Hello from foo1", NORMAL_PRIO); + create_kernel_task(NULL, join_test, NULL, NORMAL_PRIO); //create_kernel_task(NULL, producer, , NORMAL_PRIO); //create_kernel_task(NULL, consumer, NULL, NORMAL_PRIO); //create_kernel_task(NULL, mail_ping, NULL, NORMAL_PRIO); //create_kernel_task(NULL, mail_noise, NULL, NORMAL_PRIO); //create_kernel_task(NULL, svm_test, NULL, NORMAL_PRIO); //create_user_task(NULL, "/bin/hello", argv); - create_user_task(NULL, "/bin/mshell", argv); + create_user_task(NULL, "/bin/tests", argv); + //create_user_task(NULL, "/bin/jacobi", argv); + //create_user_task(NULL, "/bin/mshell", argv); //create_user_task(NULL, "/bin/jacobi", argv); //create_user_task(NULL, "/bin/server", server_argv); //sleep(5); From 8c68eab859e5f296d99036c426bcf56c8cf3c757 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:42:36 +0200 Subject: [PATCH 11/13] cosmetic changes --- .gitignore | 1 - drivers/char/socket.c | 10 +++++----- drivers/char/stdio.c | 40 ++++++++++++++++++++-------------------- newlib/examples/hello.c | 9 ++++++--- newlib/examples/mshell.c | 2 ++ 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 11e6adb9..b80ccf1a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ *.log *.swp *.DS_Store -*.swp tags Makefile include/metalsvm/config.h diff --git a/drivers/char/socket.c b/drivers/char/socket.c index 71133413..e2b24756 100755 --- a/drivers/char/socket.c +++ b/drivers/char/socket.c @@ -104,12 +104,12 @@ int socket_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; - new_node->open = &socket_open; - new_node->close = &socket_close; - new_node->read = &socket_read; + new_node->type = FS_CHARDEVICE; + new_node->open = &socket_open; + new_node->close = &socket_close; + new_node->read = &socket_read; new_node->write = &socket_write; - spinlock_init(&new_node->lock); + spinlock_init(&new_node->lock); blist= &node->block_list; do { diff --git a/drivers/char/stdio.c b/drivers/char/stdio.c index 32ac4755..8905bcc0 100644 --- a/drivers/char/stdio.c +++ b/drivers/char/stdio.c @@ -111,12 +111,12 @@ int null_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; - new_node->open = &null_open; - new_node->close = &null_close; - new_node->read = &null_read; + new_node->type = FS_CHARDEVICE; + new_node->open = &null_open; + new_node->close = &null_close; + new_node->read = &null_read; new_node->write = &null_write; - spinlock_init(&new_node->lock); + spinlock_init(&new_node->lock); blist= &node->block_list; do { @@ -170,12 +170,12 @@ int stdin_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; - new_node->open = &null_open; - new_node->close = &null_close; - new_node->read = &stdio_read; + new_node->type = FS_CHARDEVICE; + new_node->open = &null_open; + new_node->close = &null_close; + new_node->read = &stdio_read; new_node->write = &null_write; - spinlock_init(&new_node->lock); + spinlock_init(&new_node->lock); blist= &node->block_list; do { @@ -229,12 +229,12 @@ int stdout_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; - new_node->open = &null_open; - new_node->close = &null_close; - new_node->read = &null_read; + new_node->type = FS_CHARDEVICE; + new_node->open = &null_open; + new_node->close = &null_close; + new_node->read = &null_read; new_node->write = &stdio_write; - spinlock_init(&new_node->lock); + spinlock_init(&new_node->lock); blist= &node->block_list; do { @@ -288,12 +288,12 @@ int stderr_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; - new_node->open = &null_open; - new_node->close = &null_close; - new_node->read = &null_read; + new_node->type = FS_CHARDEVICE; + new_node->open = &null_open; + new_node->close = &null_close; + new_node->read = &null_read; new_node->write = &stdio_write; - spinlock_init(&new_node->lock); + spinlock_init(&new_node->lock); blist= &node->block_list; do { diff --git a/newlib/examples/hello.c b/newlib/examples/hello.c index 0a112970..99b6b5e4 100644 --- a/newlib/examples/hello.c +++ b/newlib/examples/hello.c @@ -22,6 +22,8 @@ #include #include #include +#undef errno +extern int errno; /*file descriptor init*/ #define NR_OPEN 10 @@ -43,12 +45,13 @@ int main(int argc, char** argv) { char* teststr = malloc(sizeof(char)*100); - int testfile = open("/bin/test2", O_CREAT | O_EXCL, "wr"); - write(testfile, "hello in new file '/bin/test2'", 30); + int testfile = open("/bin/test.txt", O_CREAT | O_EXCL, "wr"); + write(testfile, "hello in new file '/bin/test.txt'", 30); lseek(testfile, 0, SEEK_SET); read(testfile, teststr, 100); close(testfile); - printf("Gelesen aus neuer Datei: %s", teststr); + + printf("read from new file: %s\n", teststr); return errno; } diff --git a/newlib/examples/mshell.c b/newlib/examples/mshell.c index 9b23b201..c19de0c5 100644 --- a/newlib/examples/mshell.c +++ b/newlib/examples/mshell.c @@ -23,6 +23,8 @@ #include #include #include +#undef errno +extern int errno; void showlogo() { printf("\n\n"); From 0709d365a11d65b938e03ed5e4825b7560b2569d Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 21:49:56 +0200 Subject: [PATCH 12/13] remove some compiler warnings --- fs/initrd.c | 2 +- kernel/tasks.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/fs/initrd.c b/fs/initrd.c index 09719171..33d1eceb 100644 --- a/fs/initrd.c +++ b/fs/initrd.c @@ -212,7 +212,7 @@ static int initrd_open(fildes_t* file, const char* name) } if (file->node->type == FS_DIRECTORY) { - if (!file->flags & O_CREAT) + if (!(file->flags & O_CREAT)) return -ENOENT; uint32_t i, j; diff --git a/kernel/tasks.c b/kernel/tasks.c index 53186cbe..60c8e412 100644 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -507,13 +507,12 @@ static int load_task(load_args_t* largs) elf_header_t header; elf_program_header_t prog_header; //elf_section_header_t sec_header; - ///!!! kfree is missing! + ///!!! kfree is missing! fildes_t *file = kmalloc(sizeof(fildes_t)); file->offset = 0; file->flags = 0; //TODO: init the hole fildes_t struct! - vfs_node_t* node; task_t* curr_task = per_core(current_task); int err; @@ -524,7 +523,7 @@ static int load_task(load_args_t* largs) if (!file->node) return -EINVAL; - read_fs(file, (uint8_t*)&header, sizeof(elf_header_t)); + err = read_fs(file, (uint8_t*)&header, sizeof(elf_header_t)); if (err < 0) { kprintf("read_fs failed: %d\n", err); return err; From cba0b1a2851dc4a7954371edd6d0168e387808fd Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 15 Sep 2011 13:03:39 -0700 Subject: [PATCH 13/13] add "SCC workaround" => ignore the read function --- drivers/char/stdio.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/char/stdio.c b/drivers/char/stdio.c index 8905bcc0..3289be19 100644 --- a/drivers/char/stdio.c +++ b/drivers/char/stdio.c @@ -55,6 +55,7 @@ static int null_close(fildes_t* file) static ssize_t stdio_read(fildes_t* file, uint8_t* buffer, size_t size) { +#ifdef CONFIG_KEYBOARD kb_buffer.buffer = kmalloc(size * sizeof(char)); kb_buffer.maxsize = size; kb_buffer.size = 0; @@ -72,6 +73,9 @@ static ssize_t stdio_read(fildes_t* file, uint8_t* buffer, size_t size) //kprintf("Size: %i, offset: %i, buffer: %s", size, buffer, offset); file->offset += size; return size; +#else + return 0; +#endif } /* Write Function of a stdio device */