File tree Expand file tree Collapse file tree 2 files changed +37
-10
lines changed Expand file tree Collapse file tree 2 files changed +37
-10
lines changed Original file line number Diff line number Diff line change 61
61
/*
62
62
* lock for reading
63
63
*/
64
+ #define ____down_read (sem , slow_path ) \
65
+ ({ \
66
+ struct rw_semaphore* ret; \
67
+ asm volatile("# beginning down_read\n\t" \
68
+ LOCK_PREFIX _ASM_INC "(%[sem])\n\t" \
69
+ /* adds 0x00000001 */ \
70
+ " jns 1f\n" \
71
+ " call " slow_path "\n" \
72
+ "1:\n\t" \
73
+ "# ending down_read\n\t" \
74
+ : "+ m " (sem->count), " = a " (ret), \
75
+ ASM_CALL_CONSTRAINT \
76
+ : [sem] " a " (sem) \
77
+ : " memory ", " cc "); \
78
+ ret; \
79
+ })
80
+
64
81
static inline void __down_read (struct rw_semaphore * sem )
65
82
{
66
- asm volatile ("# beginning down_read\n\t"
67
- LOCK_PREFIX _ASM_INC "(%[sem])\n\t"
68
- /* adds 0x00000001 */
69
- " jns 1f\n"
70
- " call call_rwsem_down_read_failed\n"
71
- "1:\n\t"
72
- "# ending down_read\n\t"
73
- : "+m" (sem -> count )
74
- : [sem ] "a" (sem )
75
- : "memory" , "cc" );
83
+ ____down_read (sem , "call_rwsem_down_read_failed" );
84
+ }
85
+
86
+ static inline int __down_read_killable (struct rw_semaphore * sem )
87
+ {
88
+ if (IS_ERR (____down_read (sem , "call_rwsem_down_read_failed_killable" )))
89
+ return - EINTR ;
90
+ return 0 ;
76
91
}
77
92
78
93
/*
Original file line number Diff line number Diff line change @@ -98,6 +98,18 @@ ENTRY(call_rwsem_down_read_failed)
98
98
ret
99
99
ENDPROC(call_rwsem_down_read_failed)
100
100
101
+ ENTRY(call_rwsem_down_read_failed_killable)
102
+ FRAME_BEGIN
103
+ save_common_regs
104
+ __ASM_SIZE(push ,) %__ASM_REG(dx)
105
+ movq %rax ,%rdi
106
+ call rwsem_down_read_failed_killable
107
+ __ASM_SIZE(pop ,) %__ASM_REG(dx)
108
+ restore_common_regs
109
+ FRAME_END
110
+ ret
111
+ ENDPROC(call_rwsem_down_read_failed_killable)
112
+
101
113
ENTRY(call_rwsem_down_write_failed)
102
114
FRAME_BEGIN
103
115
save_common_regs
You can’t perform that action at this time.
0 commit comments