Revision b1e341eb linux-user/syscall.c
b/linux-user/syscall.c | ||
---|---|---|
3872 | 3872 |
#if TARGET_LONG_BITS == 32 |
3873 | 3873 |
case TARGET_NR_fcntl64: |
3874 | 3874 |
{ |
3875 |
int cmd; |
|
3875 | 3876 |
struct flock64 fl; |
3876 | 3877 |
struct target_flock64 *target_fl; |
3877 | 3878 |
#ifdef TARGET_ARM |
3878 | 3879 |
struct target_eabi_flock64 *target_efl; |
3879 | 3880 |
#endif |
3880 | 3881 |
|
3882 |
switch(arg2){ |
|
3883 |
case TARGET_F_GETLK64: |
|
3884 |
cmd = F_GETLK64; |
|
3885 |
case TARGET_F_SETLK64: |
|
3886 |
cmd = F_SETLK64; |
|
3887 |
case TARGET_F_SETLKW64: |
|
3888 |
cmd = F_SETLK64; |
|
3889 |
default: |
|
3890 |
cmd = arg2; |
|
3891 |
} |
|
3892 |
|
|
3881 | 3893 |
switch(arg2) { |
3882 |
case F_GETLK64: |
|
3883 |
ret = get_errno(fcntl(arg1, arg2, &fl));
|
|
3894 |
case TARGET_F_GETLK64:
|
|
3895 |
ret = get_errno(fcntl(arg1, cmd, &fl));
|
|
3884 | 3896 |
if (ret == 0) { |
3885 | 3897 |
#ifdef TARGET_ARM |
3886 | 3898 |
if (((CPUARMState *)cpu_env)->eabi) { |
... | ... | |
3905 | 3917 |
} |
3906 | 3918 |
break; |
3907 | 3919 |
|
3908 |
case F_SETLK64: |
|
3909 |
case F_SETLKW64: |
|
3920 |
case TARGET_F_SETLK64:
|
|
3921 |
case TARGET_F_SETLKW64:
|
|
3910 | 3922 |
#ifdef TARGET_ARM |
3911 | 3923 |
if (((CPUARMState *)cpu_env)->eabi) { |
3912 | 3924 |
lock_user_struct(target_efl, arg3, 1); |
... | ... | |
3927 | 3939 |
fl.l_pid = tswapl(target_fl->l_pid); |
3928 | 3940 |
unlock_user_struct(target_fl, arg3, 0); |
3929 | 3941 |
} |
3930 |
ret = get_errno(fcntl(arg1, arg2, &fl));
|
|
3942 |
ret = get_errno(fcntl(arg1, cmd, &fl));
|
|
3931 | 3943 |
break; |
3932 | 3944 |
default: |
3933 |
ret = get_errno(do_fcntl(arg1, arg2, arg3));
|
|
3945 |
ret = get_errno(do_fcntl(arg1, cmd, arg3));
|
|
3934 | 3946 |
break; |
3935 | 3947 |
} |
3936 | 3948 |
break; |
Also available in: Unified diff