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 60
60
/*
61
61
* lock for reading
62
62
*/
63
+ #define ____down_read (sem , slow_path ) \
64
+ ({ \
65
+ struct rw_semaphore* ret; \
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 " slow_path "\n" \
71
+ "1:\n\t" \
72
+ "# ending down_read\n\t" \
73
+ : "+ m " (sem->count), " = a " (ret), \
74
+ ASM_CALL_CONSTRAINT \
75
+ : [sem] " a " (sem) \
76
+ : " memory ", " cc "); \
77
+ ret; \
78
+ })
79
+
63
80
static inline void __down_read (struct rw_semaphore * sem )
64
81
{
65
- asm volatile ("# beginning down_read\n\t"
66
- LOCK_PREFIX _ASM_INC "(%[sem])\n\t"
67
- /* adds 0x00000001 */
68
- " jns 1f\n"
69
- " call call_rwsem_down_read_failed\n"
70
- "1:\n\t"
71
- "# ending down_read\n\t"
72
- : "+m" (sem -> count )
73
- : [sem ] "a" (sem )
74
- : "memory" , "cc" );
82
+ ____down_read (sem , "call_rwsem_down_read_failed" );
83
+ }
84
+
85
+ static inline int __down_read_killable (struct rw_semaphore * sem )
86
+ {
87
+ if (IS_ERR (____down_read (sem , "call_rwsem_down_read_failed_killable" )))
88
+ return - EINTR ;
89
+ return 0 ;
75
90
}
76
91
77
92
/*
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