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/f...er/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
#include
#include
+#include

#include

@@ -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
#include
#include
#include
@@ -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
#include
+#include
#include
#include

@@ -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 1722202007-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 1722202007-09-18 19:50:33Z dwmalone
*/

-#include
#include "opt_compat.h"
#include
#include
@@ -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 1722202007-09-18 19:50:33Z dwmalone
*/

#ifndef _LINUX_SYSPROTO_H_
@@ -11,6 +11,7 @@

#include
#include
+#include
#include
#include

@@ -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

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iEYEARECAAYFAkj3noUACgkQC3+MBN1Mb4izMwCg1j4rmgMPS/vhrHji+nyOHHz0
r5EAn12QTwTG3pT81y/M0/T0n8QR/mn6
=K3oP
-----END PGP SIGNATURE-----