On Thu, Oct 16, 2008 at 02:25:37PM -0500, Mark Kane wrote:
> On Tue, Oct 14, 2008, at 22:28:58 +0200, Tijl Coosemans wrote:
> > Patches have been committed to CURRENT and should have been MFC'ed
> > last weekend, but haven't for some reason.
> > 
> > The port has a PR waiting for maintainer feedback:
> > http://www.freebsd.org/cgi/query-pr.cgi?pr=127839
> > 
> > The relevant thread on emulation@ is:
> > http://lists.freebsd.org/pipermail/freebsd-emulation/2008-September/005311.html
> > (continues in October archives)
> 
> Hi.
> 
> I'm using RELENG_7 as of yesterday which appears to have the linprocfs
> fixes from CURRENT, and I also updated linux-flashplayer9 with the
> patch from the above PR.
> 
> When trying to use Flash 9 in linux-opera a few Flash items work (such
> as Adobe's test page which confirms it is using version 9 and sound
> does work on the rollovers there), but most things including YouTube
> videos or videos from other sites either do not play at all and lock up
> immediately or play for a few seconds and then lock up:
> 
> ----------------
> opera: Plug-in 90514 is not responding. It will be closed.
> opera: Define environment variable OPERA_KEEP_BLOCKED_PLUGIN to keep
> blocked plug-ins.
> ----------------
> 
> Trying with linux-firefox and linux-firefox-devel gives similar
> results except Firefox crashes entirely on most Flash sites.
> 
> I was using linux_base-fc4 and 2.4.2 however I updated to linux_base-f8
> and 2.6.16 since I saw others in the above emulation@ thread having
> success with f8. There doesn't seem to be any change with f8.
> 
> Is this still the expected behavior? I'm not sure if these fixes were
> supposed to fix everything related to Flash 9 or if there are still
> things to be done, so I'm just giving it a try and posting the results.
> I am running amd64 by the way.
> 
> Thanks very much in advance,

Hmm, finaly I noted this thread. There is one more patch in the pipeline
for 7 that is needed, as I was told. Testing of that patch seems to be
stalled, so I am interested in the feedback.

Possible rejects of the $FreeBSD$ chunks are fine.

Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /head/sys:r177257,177604,183612

Index: compat/linux/linux_misc.c
===================================================================
--- compat/linux/linux_misc.c   (revision 183958)
+++ compat/linux/linux_misc.c   (working copy)
@@ -63,6 +63,7 @@
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>
 #include <sys/wait.h>
+#include <sys/cpuset.h>
 
 #include <security/mac/mac_framework.h>
 
@@ -1730,22 +1731,57 @@
 }
 
 /*
- * XXX: fake one.. waiting for real implementation of affinity mask.
+ * Get affinity of a process.
  */
 int
 linux_sched_getaffinity(struct thread *td,
     struct linux_sched_getaffinity_args *args)
 {
        int error;
-       cpumask_t i = ~0;
+       struct cpuset_getaffinity_args cga;
 
-       if (args->len < sizeof(cpumask_t))
+#ifdef DEBUG
+       if (ldebug(sched_getaffinity))
+               printf(ARGS(sched_getaffinity, "%d, %d, *"), args->pid,
+                   args->len);
+#endif
+       if (args->len < sizeof(cpuset_t))
                return (EINVAL);
 
-       error = copyout(&i, args->user_mask_ptr, sizeof(cpumask_t));
-       if (error)
-               return (EFAULT);
+       cga.level = CPU_LEVEL_WHICH;
+       cga.which = CPU_WHICH_PID;
+       cga.id = args->pid;
+       cga.cpusetsize = sizeof(cpuset_t);
+       cga.mask = (cpuset_t *) args->user_mask_ptr;
 
-       td->td_retval[0] = sizeof(cpumask_t);
-       return (0);
+       if ((error = cpuset_getaffinity(td, &cga)) == 0)
+               td->td_retval[0] = sizeof(cpuset_t);
+
+       return (error);
 }
+
+/*
+ *  Set affinity of a process.
+ */
+int
+linux_sched_setaffinity(struct thread *td,
+    struct linux_sched_setaffinity_args *args)
+{
+       struct cpuset_setaffinity_args csa;
+
+#ifdef DEBUG
+       if (ldebug(sched_setaffinity))
+               printf(ARGS(sched_setaffinity, "%d, %d, *"), args->pid,
+                   args->len);
+#endif
+       if (args->len < sizeof(cpuset_t))
+               return (EINVAL);
+
+       csa.level = CPU_LEVEL_WHICH;
+       csa.which = CPU_WHICH_PID;
+       csa.id = args->pid;
+       csa.cpusetsize = sizeof(cpuset_t);
+       csa.mask = (cpuset_t *) args->user_mask_ptr;
+
+       return (cpuset_setaffinity(td, &csa));
+}
Index: i386/linux/linux_syscall.h
===================================================================
--- i386/linux/linux_syscall.h  (revision 183958)
+++ i386/linux/linux_syscall.h  (working copy)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 
19:50:33 dwmalone Exp 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
 #define        LINUX_SYS_exit  1
@@ -228,6 +228,7 @@
 #define        LINUX_SYS_linux_fremovexattr    237
 #define        LINUX_SYS_linux_tkill   238
 #define        LINUX_SYS_linux_sys_futex       240
+#define        LINUX_SYS_linux_sched_setaffinity       241
 #define        LINUX_SYS_linux_sched_getaffinity       242
 #define        LINUX_SYS_linux_set_thread_area 243
 #define        LINUX_SYS_linux_get_thread_area 244
Index: i386/linux/linux_sysent.c
===================================================================
--- i386/linux/linux_sysent.c   (revision 183958)
+++ i386/linux/linux_sysent.c   (working copy)
@@ -3,10 +3,9 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 
19:50:33 dwmalone Exp 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
-#include <bsm/audit_kevents.h>
 #include <sys/param.h>
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
@@ -260,7 +259,7 @@
        { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0 
},       /* 238 = linux_tkill */
        { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 239 = linux_sendfile64 */
        { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, 
NULL, 0, 0 },       /* 240 = linux_sys_futex */
-       { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 241 = linux_sched_setaffinity */
+       { AS(linux_sched_setaffinity_args), (sy_call_t 
*)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0 },       /* 241 = 
linux_sched_setaffinity */
        { AS(linux_sched_getaffinity_args), (sy_call_t 
*)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 },       /* 242 = 
linux_sched_getaffinity */
        { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, 
AUE_NULL, NULL, 0, 0 },   /* 243 = linux_set_thread_area */
        { AS(linux_get_thread_area_args), (sy_call_t *)linux_get_thread_area, 
AUE_NULL, NULL, 0, 0 },   /* 244 = linux_get_thread_area */
Index: i386/linux/syscalls.master
===================================================================
--- i386/linux/syscalls.master  (revision 183958)
+++ i386/linux/syscalls.master  (working copy)
@@ -409,7 +409,8 @@
 239    AUE_SENDFILE    UNIMPL  linux_sendfile64
 240    AUE_NULL        STD     { int linux_sys_futex(void *uaddr, int op, int 
val, \
                                        struct l_timespec *timeout, void 
*uaddr2, int val3); }
-241    AUE_NULL        UNIMPL  linux_sched_setaffinity
+241    AUE_NULL        STD     { int linux_sched_setaffinity(l_pid_t pid, 
l_uint len, \
+                                       l_ulong *user_mask_ptr); }
 242    AUE_NULL        STD     { int linux_sched_getaffinity(l_pid_t pid, 
l_uint len, \
                                        l_ulong *user_mask_ptr); }
 243    AUE_NULL        STD     { int linux_set_thread_area(struct l_user_desc 
*desc); }
Index: i386/linux/linux_proto.h
===================================================================
--- i386/linux/linux_proto.h    (revision 183958)
+++ i386/linux/linux_proto.h    (working copy)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.89 2007/09/18 
19:50:33 dwmalone Exp 
+ * created from FreeBSD: stable/7/sys/i386/linux/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -11,6 +11,7 @@
 
 #include <sys/signal.h>
 #include <sys/acl.h>
+#include <sys/cpuset.h>
 #include <sys/_semaphore.h>
 #include <sys/ucontext.h>
 
@@ -731,6 +732,11 @@
        char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void 
*)];
        char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)];
 };
+struct linux_sched_setaffinity_args {
+       char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)];
+       char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)];
+       char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char 
user_mask_ptr_r_[PADR_(l_ulong *)];
+};
 struct linux_sched_getaffinity_args {
        char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)];
        char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)];
@@ -1124,6 +1130,7 @@
 int    linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int    linux_tkill(struct thread *, struct linux_tkill_args *);
 int    linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
+int    linux_sched_setaffinity(struct thread *, struct 
linux_sched_setaffinity_args *);
 int    linux_sched_getaffinity(struct thread *, struct 
linux_sched_getaffinity_args *);
 int    linux_set_thread_area(struct thread *, struct 
linux_set_thread_area_args *);
 int    linux_get_thread_area(struct thread *, struct 
linux_get_thread_area_args *);
@@ -1380,6 +1387,7 @@
 #define        LINUX_SYS_AUE_linux_fremovexattr        AUE_NULL
 #define        LINUX_SYS_AUE_linux_tkill       AUE_NULL
 #define        LINUX_SYS_AUE_linux_sys_futex   AUE_NULL
+#define        LINUX_SYS_AUE_linux_sched_setaffinity   AUE_NULL
 #define        LINUX_SYS_AUE_linux_sched_getaffinity   AUE_NULL
 #define        LINUX_SYS_AUE_linux_set_thread_area     AUE_NULL
 #define        LINUX_SYS_AUE_linux_get_thread_area     AUE_NULL
Index: amd64/linux32/linux32_syscall.h
===================================================================
--- amd64/linux32/linux32_syscall.h     (revision 183958)
+++ amd64/linux32/linux32_syscall.h     (working copy)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 
2007/08/28 12:26:34 kib Exp 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
 #define        LINUX_SYS_exit  1
@@ -222,6 +222,7 @@
 #define        LINUX_SYS_linux_fremovexattr    237
 #define        LINUX_SYS_linux_tkill   238
 #define        LINUX_SYS_linux_sys_futex       240
+#define        LINUX_SYS_linux_sched_setaffinity       241
 #define        LINUX_SYS_linux_sched_getaffinity       242
 #define        LINUX_SYS_linux_set_thread_area 243
 #define        LINUX_SYS_linux_fadvise64       250
Index: amd64/linux32/syscalls.master
===================================================================
--- amd64/linux32/syscalls.master       (revision 183958)
+++ amd64/linux32/syscalls.master       (working copy)
@@ -407,7 +407,8 @@
 239    AUE_SENDFILE    UNIMPL  linux_sendfile64
 240    AUE_NULL        STD     { int linux_sys_futex(void *uaddr, int op, int 
val, \
                                        struct l_timespec *timeout, void 
*uaddr2, int val3); }
-241    AUE_NULL        UNIMPL  linux_sched_setaffinity
+241    AUE_NULL        STD     { int linux_sched_setaffinity(l_pid_t pid, 
l_uint len, \
+                                       l_ulong *user_mask_ptr); }
 242    AUE_NULL        STD     { int linux_sched_getaffinity(l_pid_t pid, 
l_uint len, \
                                        l_ulong *user_mask_ptr); }
 243    AUE_NULL        STD     { int linux_set_thread_area(struct l_user_desc 
*desc); }
Index: amd64/linux32/linux32_sysent.c
===================================================================
--- amd64/linux32/linux32_sysent.c      (revision 183958)
+++ amd64/linux32/linux32_sysent.c      (working copy)
@@ -3,10 +3,9 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 
2007/08/28 12:26:34 kib Exp 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
-#include <bsm/audit_kevents.h>
 #include "opt_compat.h"
 #include <sys/param.h>
 #include <sys/sysent.h>
@@ -261,7 +260,7 @@
        { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0 
},       /* 238 = linux_tkill */
        { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 239 = linux_sendfile64 */
        { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, 
NULL, 0, 0 },       /* 240 = linux_sys_futex */
-       { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 241 = linux_sched_setaffinity */
+       { AS(linux_sched_setaffinity_args), (sy_call_t 
*)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0 },       /* 241 = 
linux_sched_setaffinity */
        { AS(linux_sched_getaffinity_args), (sy_call_t 
*)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 },       /* 242 = 
linux_sched_getaffinity */
        { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, 
AUE_NULL, NULL, 0, 0 },   /* 243 = linux_set_thread_area */
        { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 244 = linux_get_thread_area */
Index: amd64/linux32/linux32_proto.h
===================================================================
--- amd64/linux32/linux32_proto.h       (revision 183958)
+++ amd64/linux32/linux32_proto.h       (working copy)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 
2007/08/28 12:26:34 kib Exp 
+ * created from FreeBSD: stable/7/sys/amd64/linux32/syscalls.master 172220 
2007-09-18 19:50:33Z dwmalone 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -11,6 +11,7 @@
 
 #include <sys/signal.h>
 #include <sys/acl.h>
+#include <sys/cpuset.h>
 #include <sys/_semaphore.h>
 #include <sys/ucontext.h>
 
@@ -734,6 +735,11 @@
        char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void 
*)];
        char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)];
 };
+struct linux_sched_setaffinity_args {
+       char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)];
+       char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)];
+       char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char 
user_mask_ptr_r_[PADR_(l_ulong *)];
+};
 struct linux_sched_getaffinity_args {
        char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)];
        char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)];
@@ -1105,6 +1111,7 @@
 int    linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int    linux_tkill(struct thread *, struct linux_tkill_args *);
 int    linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
+int    linux_sched_setaffinity(struct thread *, struct 
linux_sched_setaffinity_args *);
 int    linux_sched_getaffinity(struct thread *, struct 
linux_sched_getaffinity_args *);
 int    linux_set_thread_area(struct thread *, struct 
linux_set_thread_area_args *);
 int    linux_fadvise64(struct thread *, struct linux_fadvise64_args *);
@@ -1360,6 +1367,7 @@
 #define        LINUX_SYS_AUE_linux_fremovexattr        AUE_NULL
 #define        LINUX_SYS_AUE_linux_tkill       AUE_NULL
 #define        LINUX_SYS_AUE_linux_sys_futex   AUE_NULL
+#define        LINUX_SYS_AUE_linux_sched_setaffinity   AUE_NULL
 #define        LINUX_SYS_AUE_linux_sched_getaffinity   AUE_NULL
 #define        LINUX_SYS_AUE_linux_set_thread_area     AUE_NULL
 #define        LINUX_SYS_AUE_linux_fadvise64   AUE_NULL

Attachment: pgpOoAgYPBx2D.pgp
Description: PGP signature

Reply via email to