Re: [Qemu-devel] sem* and msg* for qemu
On [Thu, 01.02.2007 04:53], Hetz Ben Hamo wrote: attached? where? Sorry. Attached now. --- qemu.orig/linux-user/syscall.c.orig 2007-02-01 00:15:37 +0300 +++ qemu/linux-user/syscall.c 2007-02-01 00:03:56 +0300 @@ -1226,6 +1226,35 @@ gemu_log(Unsupported ipc call: %ld (version %d)\n, call, version); ret = -ENOSYS; break; + + case IPCOP_msgget: + ret = get_errno(msgget(first, second)); + break; + + case IPCOP_msgsnd: + ret = get_errno(msgsnd(first, (struct msgbuf *) ptr, second, third)); + break; + + case IPCOP_msgctl: + ret = get_errno(msgctl(first, second, (struct msqid_ds *) ptr)); + break; + + case IPCOP_msgrcv: + { + struct ipc_kludge + { + void *__unbounded msgp; + long int msgtyp; + }; + + struct ipc_kludge *foo = (struct ipc_kludge *) ptr; + struct msgbuf *msgp = (struct msgbuf *) foo-msgp; + + ret = get_errno(msgrcv(first, msgp, second, 0, third)); + + } + break; + case IPCOP_shmat: /* SHM_* flags are the same on all linux platforms */ ret = get_errno((long) shmat(first, (void *) ptr, second)); --- qemu-0.8.2.orig/linux-user/syscall.c2007-01-31 23:06:58 +0300 +++ qemu-0.8.2/linux-user/syscall.c 2007-01-31 23:22:12 +0300 @@ -43,6 +43,7 @@ #include sys/poll.h #include sys/times.h #include sys/shm.h +#include sys/sem.h #include sys/statfs.h #include utime.h #include sys/sysinfo.h @@ -1188,6 +1189,12 @@ uint32_t size; } shm_regions[N_SHM_REGIONS]; +union semun { + int val; + struct senid_ds *buf; + unsigned short *array; +}; + /* ??? This only works with linear mappings. */ static long do_ipc(long call, long first, long second, long third, long ptr, long fifth) @@ -1202,6 +1209,23 @@ call = 0x; switch (call) { +case IPCOP_semop: +ret = get_errno(semop(first,(struct sembuf *) ptr, second)); +break; + +case IPCOP_semget: +ret = get_errno(semget(first, second, third)); +break; + +case IPCOP_semctl: +ret = get_errno(semctl(first, second, third, ((union semun*)ptr)-val)); + +break; + +case IPCOP_semtimedop: +gemu_log(Unsupported ipc call: %ld (version %d)\n, call, version); +ret = -ENOSYS; +break; case IPCOP_shmat: /* SHM_* flags are the same on all linux platforms */ ret = get_errno((long) shmat(first, (void *) ptr, second)); signature.asc Description: Digital signature
Re: [Qemu-devel] sem* and msg* for qemu
On [Thu, 01.02.2007 04:53], Hetz Ben Hamo wrote: attached? where? Oh... Sorry. Attached now. --- qemu-0.8.2.orig/linux-user/syscall.c2007-01-31 23:06:58 +0300 +++ qemu-0.8.2/linux-user/syscall.c 2007-01-31 23:22:12 +0300 @@ -43,6 +43,7 @@ #include sys/poll.h #include sys/times.h #include sys/shm.h +#include sys/sem.h #include sys/statfs.h #include utime.h #include sys/sysinfo.h @@ -1188,6 +1189,12 @@ uint32_t size; } shm_regions[N_SHM_REGIONS]; +union semun { + int val; + struct senid_ds *buf; + unsigned short *array; +}; + /* ??? This only works with linear mappings. */ static long do_ipc(long call, long first, long second, long third, long ptr, long fifth) @@ -1202,6 +1209,23 @@ call = 0x; switch (call) { +case IPCOP_semop: +ret = get_errno(semop(first,(struct sembuf *) ptr, second)); +break; + +case IPCOP_semget: +ret = get_errno(semget(first, second, third)); +break; + +case IPCOP_semctl: +ret = get_errno(semctl(first, second, third, ((union semun*)ptr)-val)); + +break; + +case IPCOP_semtimedop: +gemu_log(Unsupported ipc call: %ld (version %d)\n, call, version); +ret = -ENOSYS; +break; case IPCOP_shmat: /* SHM_* flags are the same on all linux platforms */ ret = get_errno((long) shmat(first, (void *) ptr, second)); --- qemu.orig/linux-user/syscall.c.orig 2007-02-01 00:15:37 +0300 +++ qemu/linux-user/syscall.c 2007-02-01 00:03:56 +0300 @@ -1226,6 +1226,35 @@ gemu_log(Unsupported ipc call: %ld (version %d)\n, call, version); ret = -ENOSYS; break; + + case IPCOP_msgget: + ret = get_errno(msgget(first, second)); + break; + + case IPCOP_msgsnd: + ret = get_errno(msgsnd(first, (struct msgbuf *) ptr, second, third)); + break; + + case IPCOP_msgctl: + ret = get_errno(msgctl(first, second, (struct msqid_ds *) ptr)); + break; + + case IPCOP_msgrcv: + { + struct ipc_kludge + { + void *__unbounded msgp; + long int msgtyp; + }; + + struct ipc_kludge *foo = (struct ipc_kludge *) ptr; + struct msgbuf *msgp = (struct msgbuf *) foo-msgp; + + ret = get_errno(msgrcv(first, msgp, second, 0, third)); + + } + break; + case IPCOP_shmat: /* SHM_* flags are the same on all linux platforms */ ret = get_errno((long) shmat(first, (void *) ptr, second)); signature.asc Description: Digital signature ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
Re: [Qemu-devel] sem* and msg* for qemu
attached? where? Thanks, Hetz On 1/31/07, Kirill A. Shutemov [EMAIL PROTECTED] wrote: In the attachment patches to add support System V semaphores and message queues. This is fixed and tested debian patch. -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFFwQtmbWYnhzC5v6oRAl/oAJ0T4X44En/65pE4H4EzFVJemtbZhQCcCIh5 RG1cpmTCmKn0fMSb62DKa24= =6Ius -END PGP SIGNATURE- ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel -- Skepticism is the lazy person's default position. Visit my blog (hebrew) for things that (sometimes) matter: http://wp.dad-answers.com ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel