From 00fadf6bebb85cec2848586fa2f92578ff3b444a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Janosch=20Gr=C3=A4f?= Date: Sun, 7 Dec 2008 01:37:20 +0100 Subject: [PATCH] Made file data buffer larger (2*PAGE_SIZE); stdlibc: fixed getcwd() --- apps/cdrom/device.h | 2 +- apps/include/devfs.h | 3 +++ apps/lib/libmeinos/devfs.c | 5 +++-- apps/lib/stdlibc/files.c | 12 ++++++++---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/cdrom/device.h b/apps/cdrom/device.h index 78a20b1..7638bdd 100644 --- a/apps/cdrom/device.h +++ b/apps/cdrom/device.h @@ -29,7 +29,7 @@ #define CDROM_READ_CAPACITY 0x25 #define CDROM_READ 0xA8 -#define CDROM_BUFSIZE PAGE_SIZE +#define CDROM_BUFSIZE DEVFS_BUFSIZE #define CDROM_R 0 #define CDROM_W 1 diff --git a/apps/include/devfs.h b/apps/include/devfs.h index af0d7de..cc85af4 100644 --- a/apps/include/devfs.h +++ b/apps/include/devfs.h @@ -21,6 +21,9 @@ #include #include +#include + +#define DEVFS_BUFSIZE (2*PAGE_SIZE) typedef struct devfs_dev_S devfs_dev_t; struct devfs_dev_S { diff --git a/apps/lib/libmeinos/devfs.c b/apps/lib/libmeinos/devfs.c index 3457870..d861f27 100644 --- a/apps/lib/libmeinos/devfs.c +++ b/apps/lib/libmeinos/devfs.c @@ -22,10 +22,11 @@ #include #include #include -#include #include #include +#include + static llist_t devlist; /** @@ -92,7 +93,7 @@ void devfs_init() { * @return Device */ devfs_dev_t *devfs_createdev(const char *name) { - int shmid = shmget(IPC_PRIVATE,PAGE_SIZE,0); + int shmid = shmget(IPC_PRIVATE,DEVFS_BUFSIZE,0); if (shmid!=-1) { int id = rpc_call("devfs_createdev",0,name,shmid); if (id>=0) { diff --git a/apps/lib/stdlibc/files.c b/apps/lib/stdlibc/files.c index 7ae7bd6..c622c87 100644 --- a/apps/lib/stdlibc/files.c +++ b/apps/lib/stdlibc/files.c @@ -42,7 +42,7 @@ #define getnew_fh() (lastfh++) #define filebyfh(fh) llist_get(filelist,lidxbyfh(fh)) -#define SHMMEM_SIZE PAGE_SIZE +#define SHMMEM_SIZE (2*PAGE_SIZE) struct fslist_item { pid_t pid; @@ -351,12 +351,16 @@ static size_t _write_unnamed_pipe(int fh,const void *data,size_t size) { * @param size Size of buffer * @return Current workdir */ -char *getcwd(char *buf, size_t size) { - if (size==0) { +char *getcwd(char *buf,size_t size) { + if (buf==NULL) { + size = workdir.strlen+1; + buf = malloc(size); + } + else if (size==0) { errno = EINVAL; return NULL; } - if (workdir.strlen+1>size) { + else if (workdir.strlen+1>size) { errno = ERANGE; return NULL; } -- 2.11.4.GIT