Rename used_requeue and use it as bitwise field to store more flags.
Reimplement used_requeue logic with LINUX_XDEPR_REQUEUEOP flag.
This commit is contained in:
parent
de7bef34ba
commit
c26a933750
@ -87,7 +87,7 @@ linux_proc_init(struct thread *td, pid_t child, int flags)
|
||||
em = malloc(sizeof *em, M_LINUX, M_WAITOK | M_ZERO);
|
||||
em->pid = child;
|
||||
em->pdeath_signal = 0;
|
||||
em->used_requeue = 0;
|
||||
em->flags = 0;
|
||||
em->robust_futexes = NULL;
|
||||
if (flags & LINUX_CLONE_THREAD) {
|
||||
/* handled later in the code */
|
||||
|
@ -55,7 +55,7 @@ struct linux_emuldata {
|
||||
struct linux_emuldata_shared *shared;
|
||||
|
||||
int pdeath_signal; /* parent death signal */
|
||||
int used_requeue; /* uses deprecated futex op */
|
||||
int flags; /* different emuldata flags */
|
||||
|
||||
struct linux_robust_list_head *robust_futexes;
|
||||
|
||||
@ -76,6 +76,10 @@ struct linux_emuldata *em_find(struct proc *, int locked);
|
||||
#define EMUL_DOLOCK 1
|
||||
#define EMUL_DONTLOCK 0
|
||||
|
||||
/* emuldata flags */
|
||||
#define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated
|
||||
futex REQUEUE op*/
|
||||
|
||||
int linux_proc_init(struct thread *, pid_t, int);
|
||||
void linux_proc_exit(void *, struct proc *);
|
||||
void linux_schedtail(void *, struct proc *);
|
||||
|
@ -678,11 +678,11 @@ linux_sys_futex(struct thread *td, struct linux_sys_futex_args *args)
|
||||
* FUTEX_REQUEUE returned EINVAL.
|
||||
*/
|
||||
em = em_find(td->td_proc, EMUL_DONTLOCK);
|
||||
if (em->used_requeue == 0) {
|
||||
if ((em->flags & LINUX_XDEPR_REQUEUEOP) == 0) {
|
||||
linux_msg(td,
|
||||
"linux_sys_futex: "
|
||||
"unsupported futex_requeue op\n");
|
||||
em->used_requeue = 1;
|
||||
em->flags |= LINUX_XDEPR_REQUEUEOP;
|
||||
}
|
||||
return (EINVAL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user