File tree Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change 49
49
/*
50
50
* lock for reading
51
51
*/
52
- static inline void __down_read (struct rw_semaphore * sem )
52
+ static inline int ___down_read (struct rw_semaphore * sem )
53
53
{
54
54
signed long old , new ;
55
55
@@ -62,10 +62,25 @@ static inline void __down_read(struct rw_semaphore *sem)
62
62
: "=&d" (old ), "=&d" (new ), "=Q" (sem -> count )
63
63
: "Q" (sem -> count ), "i" (RWSEM_ACTIVE_READ_BIAS )
64
64
: "cc" , "memory" );
65
- if (old < 0 )
65
+ return (old < 0 );
66
+ }
67
+
68
+ static inline void __down_read (struct rw_semaphore * sem )
69
+ {
70
+ if (___down_read (sem ))
66
71
rwsem_down_read_failed (sem );
67
72
}
68
73
74
+ static inline int __down_read_killable (struct rw_semaphore * sem )
75
+ {
76
+ if (___down_read (sem )) {
77
+ if (IS_ERR (rwsem_down_read_failed_killable (sem )))
78
+ return - EINTR ;
79
+ }
80
+
81
+ return 0 ;
82
+ }
83
+
69
84
/*
70
85
* trylock for reading -- returns 1 if successful, 0 if contention
71
86
*/
You can’t perform that action at this time.
0 commit comments