Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F135966190
D2138.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D2138.id.diff
View Options
Index: head/sys/amd64/linux32/linux.h
===================================================================
--- head/sys/amd64/linux32/linux.h
+++ head/sys/amd64/linux32/linux.h
@@ -780,6 +780,7 @@
int linux32_copyiniov(struct l_iovec32 *iovp32, l_ulong iovcnt,
struct iovec **iovp, int error);
+int linux_copyout_rusage(struct rusage *ru, void *uaddr);
/* robust futexes */
struct linux_robust_list {
Index: head/sys/amd64/linux32/linux32_genassym.c
===================================================================
--- head/sys/amd64/linux32/linux32_genassym.c
+++ head/sys/amd64/linux32/linux32_genassym.c
@@ -3,6 +3,7 @@
#include <sys/param.h>
#include <sys/assym.h>
+#include <sys/resource.h>
#include <sys/systm.h>
#include <amd64/linux32/linux.h>
Index: head/sys/amd64/linux32/linux32_machdep.c
===================================================================
--- head/sys/amd64/linux32/linux32_machdep.c
+++ head/sys/amd64/linux32/linux32_machdep.c
@@ -72,6 +72,8 @@
#include <compat/linux/linux_util.h>
#include <compat/linux/linux_emul.h>
+static void bsd_to_linux_rusage(struct rusage *ru, struct l_rusage *lru);
+
struct l_old_select_argv {
l_int nfds;
l_uintptr_t readfds;
@@ -133,6 +135,16 @@
}
int
+linux_copyout_rusage(struct rusage *ru, void *uaddr)
+{
+ struct l_rusage lru;
+
+ bsd_to_linux_rusage(ru, &lru);
+
+ return (copyout(&lru, uaddr, sizeof(struct l_rusage)));
+}
+
+int
linux_execve(struct thread *td, struct linux_execve_args *args)
{
struct image_args eargs;
@@ -908,17 +920,14 @@
int
linux_getrusage(struct thread *td, struct linux_getrusage_args *uap)
{
- struct l_rusage s32;
struct rusage s;
int error;
error = kern_getrusage(td, uap->who, &s);
if (error != 0)
return (error);
- if (uap->rusage != NULL) {
- bsd_to_linux_rusage(&s, &s32);
- error = copyout(&s32, uap->rusage, sizeof(s32));
- }
+ if (uap->rusage != NULL)
+ error = linux_copyout_rusage(&s, uap->rusage);
return (error);
}
@@ -1024,37 +1033,3 @@
return (0);
}
-
-int
-linux_wait4(struct thread *td, struct linux_wait4_args *args)
-{
- int error, options;
- struct rusage ru, *rup;
- struct l_rusage lru;
-
-#ifdef DEBUG
- if (ldebug(wait4))
- printf(ARGS(wait4, "%d, %p, %d, %p"),
- args->pid, (void *)args->status, args->options,
- (void *)args->rusage);
-#endif
-
- options = (args->options & (WNOHANG | WUNTRACED));
- /* WLINUXCLONE should be equal to __WCLONE, but we make sure */
- if (args->options & __WCLONE)
- options |= WLINUXCLONE;
-
- if (args->rusage != NULL)
- rup = &ru;
- else
- rup = NULL;
- error = linux_common_wait(td, args->pid, args->status, options, rup);
- if (error)
- return (error);
- if (args->rusage != NULL) {
- bsd_to_linux_rusage(rup, &lru);
- error = copyout(&lru, args->rusage, sizeof(lru));
- }
-
- return (error);
-}
Index: head/sys/compat/linux/linux_misc.c
===================================================================
--- head/sys/compat/linux/linux_misc.c
+++ head/sys/compat/linux/linux_misc.c
@@ -886,6 +886,35 @@
return (linux_common_wait(td, args->pid, args->status, options, NULL));
}
+int
+linux_wait4(struct thread *td, struct linux_wait4_args *args)
+{
+ int error, options;
+ struct rusage ru, *rup;
+
+#ifdef DEBUG
+ if (ldebug(wait4))
+ printf(ARGS(wait4, "%d, %p, %d, %p"),
+ args->pid, (void *)args->status, args->options,
+ (void *)args->rusage);
+#endif
+
+ options = (args->options & (WNOHANG | WUNTRACED));
+ /* WLINUXCLONE should be equal to __WCLONE, but we make sure */
+ if (args->options & __WCLONE)
+ options |= WLINUXCLONE;
+
+ if (args->rusage != NULL)
+ rup = &ru;
+ else
+ rup = NULL;
+ error = linux_common_wait(td, args->pid, args->status, options, rup);
+ if (error != 0)
+ return (error);
+ if (args->rusage != NULL)
+ error = linux_copyout_rusage(&ru, args->rusage);
+ return (error);
+}
int
linux_mknod(struct thread *td, struct linux_mknod_args *args)
Index: head/sys/i386/linux/linux.h
===================================================================
--- head/sys/i386/linux/linux.h
+++ head/sys/i386/linux/linux.h
@@ -741,6 +741,8 @@
#define LINUX_GET_USEABLE(desc) \
(((desc)->b >> LINUX_ENTRY_B_USEABLE) & 1)
+#define linux_copyout_rusage(r, u) copyout(r, u, sizeof(*r))
+
/* robust futexes */
struct linux_robust_list {
struct linux_robust_list *next;
Index: head/sys/i386/linux/linux_machdep.c
===================================================================
--- head/sys/i386/linux/linux_machdep.c
+++ head/sys/i386/linux/linux_machdep.c
@@ -1047,34 +1047,3 @@
return (ENOSYS);
#endif
}
-
-int
-linux_wait4(struct thread *td, struct linux_wait4_args *args)
-{
- int error, options;
- struct rusage ru, *rup;
-
-#ifdef DEBUG
- if (ldebug(wait4))
- printf(ARGS(wait4, "%d, %p, %d, %p"),
- args->pid, (void *)args->status, args->options,
- (void *)args->rusage);
-#endif
-
- options = (args->options & (WNOHANG | WUNTRACED));
- /* WLINUXCLONE should be equal to __WCLONE, but we make sure */
- if (args->options & __WCLONE)
- options |= WLINUXCLONE;
-
- if (args->rusage != NULL)
- rup = &ru;
- else
- rup = NULL;
- error = linux_common_wait(td, args->pid, args->status, options, rup);
- if (error)
- return (error);
- if (args->rusage != NULL)
- error = copyout(&ru, args->rusage, sizeof(ru));
-
- return (error);
-}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 15, 3:43 PM (1 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25327692
Default Alt Text
D2138.id.diff (5 KB)
Attached To
Mode
D2138: Linuxulator. struct rusage conversion (0).
Attached
Detach File
Event Timeline
Log In to Comment