K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / src / linux-headers-3.13.0-24 / arch / sh / include / asm /
server ip : 172.67.156.115

your ip : 108.162.242.54

H O M E


Filename/usr/src/linux-headers-3.13.0-24/arch/sh/include/asm/futex-irq.h
Size1.81 kb
Permissionrw-r--r--
Ownerroot : root
Create time27-Apr-2025 09:50
Last modified20-Jan-2014 10:40
Last accessed07-Jul-2025 00:18
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
#ifndef __ASM_SH_FUTEX_IRQ_H
#define __ASM_SH_FUTEX_IRQ_H


static inline int atomic_futex_op_xchg_set(int oparg, u32 __user *uaddr,
int *oldval)
{
unsigned long flags;
int ret;

local_irq_save(flags);

ret = get_user(*oldval, uaddr);
if (!ret)
ret = put_user(oparg, uaddr);

local_irq_restore(flags);

return ret;
}

static inline int atomic_futex_op_xchg_add(int oparg, u32 __user *uaddr,
int *oldval)
{
unsigned long flags;
int ret;

local_irq_save(flags);

ret = get_user(*oldval, uaddr);
if (!ret)
ret = put_user(*oldval + oparg, uaddr);

local_irq_restore(flags);

return ret;
}

static inline int atomic_futex_op_xchg_or(int oparg, u32 __user *uaddr,
int *oldval)
{
unsigned long flags;
int ret;

local_irq_save(flags);

ret = get_user(*oldval, uaddr);
if (!ret)
ret = put_user(*oldval | oparg, uaddr);

local_irq_restore(flags);

return ret;
}

static inline int atomic_futex_op_xchg_and(int oparg, u32 __user *uaddr,
int *oldval)
{
unsigned long flags;
int ret;

local_irq_save(flags);

ret = get_user(*oldval, uaddr);
if (!ret)
ret = put_user(*oldval & oparg, uaddr);

local_irq_restore(flags);

return ret;
}

static inline int atomic_futex_op_xchg_xor(int oparg, u32 __user *uaddr,
int *oldval)
{
unsigned long flags;
int ret;

local_irq_save(flags);

ret = get_user(*oldval, uaddr);
if (!ret)
ret = put_user(*oldval ^ oparg, uaddr);

local_irq_restore(flags);

return ret;
}

static inline int atomic_futex_op_cmpxchg_inatomic(u32 *uval,
u32 __user *uaddr,
u32 oldval, u32 newval)
{
unsigned long flags;
int ret;
u32 prev = 0;

local_irq_save(flags);

ret = get_user(prev, uaddr);
if (!ret && oldval == prev)
ret = put_user(newval, uaddr);

local_irq_restore(flags);

*uval = prev;
return ret;
}

#endif /* __ASM_SH_FUTEX_IRQ_H */