[kaffe] CVS kaffe (robilad): reverted to old version
Kaffe CVS
cvs-commits at kaffe.org
Sun Sep 24 13:43:20 PDT 2006
PatchSet 7424
Date: 2006/09/24 18:24:16
Author: robilad
Branch: HEAD
Tag: (none)
Log:
reverted to old version
Members:
include/jsyscall.h:1.28->1.29
kaffe/kaffeh/support.c:1.53->1.54
kaffe/kaffevm/systems/beos-native/syscalls.c:1.12->1.13
kaffe/kaffevm/systems/drops-l4threads/syscalls.c:1.3->1.4
kaffe/kaffevm/systems/oskit-pthreads/syscalls.c:1.12->1.13
kaffe/kaffevm/systems/unix-jthreads/syscalls.c:1.21->1.22
kaffe/kaffevm/systems/unix-pthreads/syscalls.c:1.39->1.40
Index: kaffe/include/jsyscall.h
diff -u kaffe/include/jsyscall.h:1.28 kaffe/include/jsyscall.h:1.29
--- kaffe/include/jsyscall.h:1.28 Tue Sep 12 22:26:58 2006
+++ kaffe/include/jsyscall.h Sun Sep 24 18:24:16 2006
@@ -95,7 +95,9 @@
int (*_waitpid)(int, int *, int, int *);
int (*_kill)(int, int);
+ int (*_mmap)(void **, size_t *, int, int fd, off_t *);
int (*_munmap)(void *, size_t);
+ int (*_msync)(void *, size_t);
int (*_pipecreate)(int *, int *);
int (*_piperead)(int, void *, size_t, int, ssize_t *);
@@ -250,13 +252,19 @@
#define KFORKEXEC(A,B,C,D,E) \
(*Kaffe_SystemCallInterface._forkexec)(A,B,C,D,E)
#define KKILL(A,B) (*Kaffe_SystemCallInterface._kill)(A,B)
+#define KMMAP(A,B,C,D,E) (*Kaffe_SystemCallInterface._mmap)(A,B,C,D,E)
#define KMUNMAP(A,B) (*Kaffe_SystemCallInterface._munmap)(A,B)
+#define KMSYNC(A,B) (*Kaffe_SystemCallInterface._msync)(A,B)
#define KPIPECREATE(A,B) (*Kaffe_SystemCallInterface._pipecreate)(A,B)
#define KPIPEREAD(A,B,C,D,E) (*Kaffe_SystemCallInterface._piperead)(A,B,C,D,E)
#define KPIPEWRITE(A,B,C,D,E) (*Kaffe_SystemCallInterface._pipewrite)(A,B,C,D,E)
#define KSOCKSHUTDOWN(A) (*Kaffe_SystemCallInterface._sockShutdown)(A)
+
+#define KAFFE_MMAP_READ 0
+#define KAFFE_MMAP_WRITE 1
+#define KAFFE_MMAP_PRIVATE 2
#define NOTIMEOUT (-1)
Index: kaffe/kaffe/kaffeh/support.c
diff -u kaffe/kaffe/kaffeh/support.c:1.53 kaffe/kaffe/kaffeh/support.c:1.54
--- kaffe/kaffe/kaffeh/support.c:1.53 Tue Sep 12 22:26:58 2006
+++ kaffe/kaffe/kaffeh/support.c Sun Sep 24 18:25:23 2006
@@ -144,7 +144,9 @@
NULL, /* forkexec */
NULL, /* waitpid */
NULL, /* kill */
+ NULL, /* mmap */
NULL, /* munmap */
+ NULL, /* msync */
NULL, /* pipecreate */
NULL, /* piperead */
NULL /* pipewrite */
Index: kaffe/kaffe/kaffevm/systems/beos-native/syscalls.c
diff -u kaffe/kaffe/kaffevm/systems/beos-native/syscalls.c:1.12 kaffe/kaffe/kaffevm/systems/beos-native/syscalls.c:1.13
--- kaffe/kaffe/kaffevm/systems/beos-native/syscalls.c:1.12 Tue Sep 12 22:26:59 2006
+++ kaffe/kaffe/kaffevm/systems/beos-native/syscalls.c Sun Sep 24 18:26:40 2006
@@ -500,6 +500,12 @@
}
static int
+beos_native_mmap(void **memory, size_t *size, int mode, int fd, off_t *offset)
+{
+ return B_UNSUPPORTED;
+}
+
+static int
beos_native_munmap(void *memory, size_t size)
{
return B_UNSUPPORTED;
@@ -538,5 +544,6 @@
beos_native_forkexec,
beos_native_waitpid,
beos_native_kill,
+ beos_native_mmap,
beos_native_munmap
};
Index: kaffe/kaffe/kaffevm/systems/drops-l4threads/syscalls.c
diff -u kaffe/kaffe/kaffevm/systems/drops-l4threads/syscalls.c:1.3 kaffe/kaffe/kaffevm/systems/drops-l4threads/syscalls.c:1.4
--- kaffe/kaffe/kaffevm/systems/drops-l4threads/syscalls.c:1.3 Tue Sep 12 22:26:59 2006
+++ kaffe/kaffe/kaffevm/systems/drops-l4threads/syscalls.c Sun Sep 24 18:27:45 2006
@@ -341,12 +341,25 @@
return -1;
}
+static int drops_mmap(void **memory UNUSED, size_t *size UNUSED,
+ int mode UNUSED, int fd UNUSED,
+ off_t *offset UNUSED) {
+ unimp("mmap() not implemented");
+ return -1;
+}
+
static int drops_munmap(void *memory UNUSED,
size_t size UNUSED) {
unimp("munmap() not implemented");
return -1;
}
+static int drops_msync(void *memory UNUSED,
+ size_t length UNUSED) {
+ unimp("msync() not implemented");
+ return -1;
+}
+
static int drops_pipecreate(int * a UNUSED, int *b UNUSED) {
unimp("pipecreate() not implemented");
return -1;
@@ -401,7 +414,9 @@
drops_forkexec,
drops_waitpid,
drops_kill,
+ drops_mmap,
drops_munmap,
+ drops_msync,
drops_pipecreate,
drops_piperead,
drops_pipewrite
Index: kaffe/kaffe/kaffevm/systems/oskit-pthreads/syscalls.c
diff -u kaffe/kaffe/kaffevm/systems/oskit-pthreads/syscalls.c:1.12 kaffe/kaffe/kaffevm/systems/oskit-pthreads/syscalls.c:1.13
--- kaffe/kaffe/kaffevm/systems/oskit-pthreads/syscalls.c:1.12 Tue Sep 12 22:26:59 2006
+++ kaffe/kaffe/kaffevm/systems/oskit-pthreads/syscalls.c Sun Sep 24 18:28:49 2006
@@ -318,6 +318,12 @@
}
static int
+oskit_pthread_mmap(void **memory, size_t *size, )
+{
+ return (EOPNOTSUPP);
+}
+
+static int
oskit_pthread_munmap(void *memory, size_t size)
{
return (EOPNOTSUPP);
@@ -356,5 +362,6 @@
oskit_pthread_forkexec,
oskit_pthread_waitpid,
oskit_pthread_kill,
+ oskit_pthread_mmap,
oskit_pthread_munmap
};
Index: kaffe/kaffe/kaffevm/systems/unix-jthreads/syscalls.c
diff -u kaffe/kaffe/kaffevm/systems/unix-jthreads/syscalls.c:1.21 kaffe/kaffe/kaffevm/systems/unix-jthreads/syscalls.c:1.22
--- kaffe/kaffe/kaffevm/systems/unix-jthreads/syscalls.c:1.21 Tue Sep 12 22:27:00 2006
+++ kaffe/kaffe/kaffevm/systems/unix-jthreads/syscalls.c Sun Sep 24 18:30:29 2006
@@ -325,6 +325,50 @@
}
static int
+jthreadedMmap(void **memory, size_t *size, int mode, int fd, off_t *offset)
+{
+#if defined(HAVE_MMAP)
+ size_t pages_sz;
+ off_t pages_offset;
+ int sysmode, sysflags;
+ int rc = 0;
+
+ pages_sz = (*size)/getpagesize();
+ *size = (pages_sz+1)*getpagesize();
+
+ pages_offset = (*offset)/getpagesize();
+ *offset = pages_offset*getpagesize();
+
+ switch (mode) {
+ case KAFFE_MMAP_READ:
+ sysflags = MAP_PRIVATE;
+ sysmode = PROT_READ;
+ break;
+ case KAFFE_MMAP_WRITE:
+ sysflags = MAP_SHARED;
+ sysmode = PROT_READ | PROT_WRITE;
+ break;
+ case KAFFE_MMAP_PRIVATE:
+ sysflags = MAP_PRIVATE;
+ sysmode = PROT_WRITE | PROT_READ;
+ break;
+ default:
+ return EINVAL;
+ }
+
+ jthread_spinon(0);
+ *memory = mmap(*memory, *size, sysmode, sysflags, fd, *offset);
+ if (*memory == NULL)
+ rc = errno;
+
+ jthread_spinoff(0);
+ return (rc);
+#else
+ return (ENOTSUP);
+#endif
+}
+
+static int
jthreadedMunmap(void *memory, size_t size)
{
#if defined(HAVE_MMAP)
@@ -341,6 +385,27 @@
#endif
}
+static int
+jthreadedMsync(void *memory, size_t size)
+{
+#if defined(HAVE_MMAP)
+ int rc = 0;
+
+ jthread_spinon(0);
+ memory = (void *)(((size_t)memory/getpagesize()) * getpagesize());
+ size += getpagesize();
+ /* TODO: Try not to freeze the entire VM. */
+ if (msync(memory, size, MS_SYNC | MS_INVALIDATE) < 0) {
+ rc = errno;
+ }
+ jthread_spinoff(0);
+
+ return rc;
+#else
+ return (ENOTSUP);
+#endif
+}
+
/*
* The syscall interface as provided by the internal jthread system.
*/
@@ -379,7 +444,9 @@
jthreadedForkExec,
jthreadedWaitpid,
jthreadedKill,
+ jthreadedMmap,
jthreadedMunmap,
+ jthreadedMsync,
jthreadedPipeCreate,
jthreadedTimedRead,
jthreadedTimedWrite
Index: kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c
diff -u kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c:1.39 kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c:1.40
--- kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c:1.39 Tue Sep 12 22:27:00 2006
+++ kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c Sun Sep 24 18:31:19 2006
@@ -790,6 +790,47 @@
}
static int
+jthreadedMmap(void **memory, size_t *size, int mode, int fd, off_t *offset)
+{
+#if defined(HAVE_MMAP)
+ size_t pages_sz;
+ off_t pages_offset;
+ int sysmode, sysflags;
+ int rc = 0;
+
+ pages_sz = (*size)/getpagesize();
+ *size = (pages_sz+1)*getpagesize();
+
+ pages_offset = (*offset)/getpagesize();
+ *offset = pages_offset*getpagesize();
+
+ switch (mode) {
+ case KAFFE_MMAP_READ:
+ sysflags = MAP_SHARED;
+ sysmode = PROT_READ;
+ break;
+ case KAFFE_MMAP_WRITE:
+ sysflags = MAP_SHARED;
+ sysmode = PROT_WRITE | PROT_READ;
+ break;
+ case KAFFE_MMAP_PRIVATE:
+ sysflags = MAP_PRIVATE;
+ sysmode = PROT_WRITE | PROT_READ;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ *memory = mmap(*memory, *size, sysmode, sysflags, fd, *offset);
+
+ return (rc);
+#else
+ return (ENOTSUP);
+#endif
+}
+
+
+static int
jthreadedMunmap(void *memory, size_t size)
{
#if defined(HAVE_MMAP)
@@ -805,6 +846,25 @@
}
static int
+jthreadedMsync(void *memory, size_t size)
+{
+#if defined(HAVE_MMAP)
+ int rc = 0;
+
+ memory = (void *)(((size_t)memory/getpagesize()) * getpagesize());
+ size += getpagesize();
+ /* TODO: Try not to freeze the entire VM. */
+ if (msync(memory, size, MS_SYNC | MS_INVALIDATE) < 0) {
+ rc = errno;
+ }
+
+ return rc;
+#else
+ return (ENOTSUP);
+#endif
+}
+
+static int
jthreadedPipeCreate(int *read_fd, int *write_fd)
{
int pairs[2];
@@ -859,7 +919,9 @@
jthreadedForkExec,
jthreadedWaitpid,
jthreadedKill,
+ jthreadedMmap,
jthreadedMunmap,
+ jthreadedMsync,
jthreadedPipeCreate,
jthreadedTimedRead,
jthreadedTimedWrite
More information about the kaffe
mailing list