PERFORCE change 123267 for review

Roman Divacky rdivacky at FreeBSD.org
Tue Jul 10 10:14:35 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=123267

Change 123267 by rdivacky at rdivacky_witten on 2007/07/10 10:14:31

	Dummy epoll_ctl and epoll_wait syscalls.

Affected files ...

.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_dummy.c#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_proto.h#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_syscall.h#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_sysent.c#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/syscalls.master#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/compat/linux/linux_epoll.c#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/compat/linux/linux_epoll.h#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_dummy.c#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_proto.h#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_syscall.h#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_sysent.c#3 edit
.. //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/syscalls.master#3 edit

Differences ...

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_dummy.c#3 (text+ko) ====

@@ -65,8 +65,6 @@
 DUMMY(fadvise64);
 DUMMY(ptrace);
 DUMMY(lookup_dcookie);
-DUMMY(epoll_ctl);
-DUMMY(epoll_wait);
 DUMMY(remap_file_pages);
 DUMMY(timer_create);
 DUMMY(timer_settime);

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_proto.h#3 (text+ko) ====

@@ -747,13 +747,19 @@
 	register_t dummy;
 };
 struct linux_epoll_create_args {
-	char size_l_[PADL_(int)]; int size; char size_r_[PADR_(int)];
+	char size_l_[PADL_(l_int)]; l_int size; char size_r_[PADR_(l_int)];
 };
 struct linux_epoll_ctl_args {
-	register_t dummy;
+	char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)];
+	char op_l_[PADL_(l_int)]; l_int op; char op_r_[PADR_(l_int)];
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char event_l_[PADL_(struct linux_epoll_event *)]; struct linux_epoll_event * event; char event_r_[PADR_(struct linux_epoll_event *)];
 };
 struct linux_epoll_wait_args {
-	register_t dummy;
+	char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)];
+	char events_l_[PADL_(struct linux_epoll_event *)]; struct linux_epoll_event * events; char events_r_[PADR_(struct linux_epoll_event *)];
+	char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)];
+	char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)];
 };
 struct linux_remap_file_pages_args {
 	register_t dummy;

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_syscall.h#3 (text+ko) ====


==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/linux32_sysent.c#3 (text+ko) ====

@@ -275,8 +275,8 @@
 	{ AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0 },	/* 252 = linux_exit_group */
 	{ 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0 },	/* 253 = linux_lookup_dcookie */
 	{ AS(linux_epoll_create_args), (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0 },	/* 254 = linux_epoll_create */
-	{ 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 },	/* 255 = linux_epoll_ctl */
-	{ 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 },	/* 256 = linux_epoll_wait */
+	{ AS(linux_epoll_ctl_args), (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 },	/* 255 = linux_epoll_ctl */
+	{ AS(linux_epoll_wait_args), (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 },	/* 256 = linux_epoll_wait */
 	{ 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0 },	/* 257 = linux_remap_file_pages */
 	{ AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0 },	/* 258 = linux_set_tid_address */
 	{ 0, (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0 },	/* 259 = linux_timer_create */

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/amd64/linux32/syscalls.master#3 (text+ko) ====

@@ -420,9 +420,11 @@
 251	AUE_NULL	UNIMPL
 252	AUE_EXIT	STD	{ int linux_exit_group(int error_code); }
 253	AUE_NULL	STD	{ int linux_lookup_dcookie(void); }
-254	AUE_NULL	STD	{ int linux_epoll_create(int size); }
-255	AUE_NULL	STD	{ int linux_epoll_ctl(void); }
-256	AUE_NULL	STD	{ int linux_epoll_wait(void); }
+254	AUE_NULL	STD	{ int linux_epoll_create(l_int size); }
+255	AUE_NULL	STD	{ int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \
+					struct linux_epoll_event *event); }
+256	AUE_NULL	STD	{ int linux_epoll_wait(l_int epfd, struct linux_epoll_event *events, \
+					l_int maxevents, l_int timeout); }
 257	AUE_NULL	STD	{ int linux_remap_file_pages(void); }
 258	AUE_NULL	STD	{ int linux_set_tid_address(int *tidptr); }
 259	AUE_NULL	STD	{ int linux_timer_create(void); }

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/compat/linux/linux_epoll.c#3 (text+ko) ====

@@ -27,7 +27,17 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_compat.h"
+
+#include <linux_epoll.h>
 
+#ifdef COMPAT_LINUX32
+#include <machine/../linux32/linux.h>
+#else
+#include <machine/../linux/linux.h>
+#endif
+
+
 int
 linux_epoll_create(struct thread *td, struct linux_epoll_create_args *args)
 {
@@ -37,3 +47,15 @@
 
 	return kqueue(td, args);
 }
+
+int
+linux_epoll_ctl(struct thread *td, struct linux_epoll_ctl_args *args)
+{
+	return (ENOSYS);
+}
+
+int
+linux_epoll_wait(struct thread *td, struct linux_epoll_wait_args *args)
+{
+	return (ENOSYS);
+}

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/compat/linux/linux_epoll.h#3 (text+ko) ====

@@ -29,4 +29,15 @@
 #ifndef _LINUX_EPOLL_H_
 #define	_LINUX_EPOLL_H_
 
+#ifdef __amd64__
+#define	EPOLL_PACKED	__packed
+#else
+#define	EPOLL_PACKED
+#endif
+
+struct linux_epoll_event {
+	uint32_t	events;
+	uint64_t	data;	
+} EPOLL_PACKED;
+
 #endif	/* !_LINUX_EPOLL_H_ */

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_dummy.c#3 (text+ko) ====

@@ -67,8 +67,6 @@
 DUMMY(mincore);
 DUMMY(fadvise64);
 DUMMY(lookup_dcookie);
-DUMMY(epoll_ctl);
-DUMMY(epoll_wait);
 DUMMY(remap_file_pages);
 DUMMY(fstatfs64);
 DUMMY(fadvise64_64);

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_proto.h#3 (text+ko) ====

@@ -747,13 +747,19 @@
 	register_t dummy;
 };
 struct linux_epoll_create_args {
-	char size_l_[PADL_(int)]; int size; char size_r_[PADR_(int)];
+	char size_l_[PADL_(l_int)]; l_int size; char size_r_[PADR_(l_int)];
 };
 struct linux_epoll_ctl_args {
-	register_t dummy;
+	char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)];
+	char op_l_[PADL_(l_int)]; l_int op; char op_r_[PADR_(l_int)];
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char event_l_[PADL_(struct linux_epoll_event *)]; struct linux_epoll_event * event; char event_r_[PADR_(struct linux_epoll_event *)];
 };
 struct linux_epoll_wait_args {
-	register_t dummy;
+	char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)];
+	char events_l_[PADL_(struct linux_epoll_event *)]; struct linux_epoll_event * events; char events_r_[PADR_(struct linux_epoll_event *)];
+	char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)];
+	char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)];
 };
 struct linux_remap_file_pages_args {
 	register_t dummy;

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_syscall.h#3 (text+ko) ====


==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/linux_sysent.c#3 (text+ko) ====

@@ -274,8 +274,8 @@
 	{ AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0 },	/* 252 = linux_exit_group */
 	{ 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0 },	/* 253 = linux_lookup_dcookie */
 	{ AS(linux_epoll_create_args), (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0 },	/* 254 = linux_epoll_create */
-	{ 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 },	/* 255 = linux_epoll_ctl */
-	{ 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 },	/* 256 = linux_epoll_wait */
+	{ AS(linux_epoll_ctl_args), (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0 },	/* 255 = linux_epoll_ctl */
+	{ AS(linux_epoll_wait_args), (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0 },	/* 256 = linux_epoll_wait */
 	{ 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0 },	/* 257 = linux_remap_file_pages */
 	{ AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0 },	/* 258 = linux_set_tid_address */
 	{ AS(linux_timer_create_args), (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0 },	/* 259 = linux_timer_create */

==== //depot/projects/soc2007/rdivacky/linux_epoll/sys/i386/linux/syscalls.master#3 (text+ko) ====

@@ -422,9 +422,11 @@
 251	AUE_NULL	UNIMPL
 252	AUE_EXIT	STD	{ int linux_exit_group(int error_code); }
 253	AUE_NULL	STD	{ int linux_lookup_dcookie(void); }
-254	AUE_NULL	STD	{ int linux_epoll_create(int size); }
-255	AUE_NULL	STD	{ int linux_epoll_ctl(void); }
-256	AUE_NULL	STD	{ int linux_epoll_wait(void); }
+254	AUE_NULL	STD	{ int linux_epoll_create(l_int size); }
+255	AUE_NULL	STD	{ int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \
+					struct linux_epoll_event *event); }
+256	AUE_NULL	STD	{ int linux_epoll_wait(l_int epfd, struct linux_epoll_event *events, \
+					l_int maxevents, l_int timeout); }
 257	AUE_NULL	STD	{ int linux_remap_file_pages(void); }
 258	AUE_NULL	STD	{ int linux_set_tid_address(int *tidptr); }
 259	AUE_NULL	STD	{ int linux_timer_create(clockid_t clock_id, \


More information about the p4-projects mailing list