mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 21:51:05 +00:00
[PATCH] vt: refactor console SAK processing
This does several things. - It moves looking up of the current foreground console into process context where we can safely take the semaphore that protects this operation. - It uses the new flavor of work queue processing. - This generates a factor of do_SAK, __do_SAK that runs immediately. - This calls __do_SAK with the console semaphore held ensuring nothing else happens to the console while we process the SAK operation. - With the console SAK processing moved into process context this patch removes the xchg operations that I used to attempt to attomically update struct pid, because of the strange locking used in the SAK processing. With SAK using the normal console semaphore nothing special is needed. Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0a7b35cb18
commit
8b6312f4dc
6 changed files with 45 additions and 18 deletions
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <linux/wait.h>
|
||||
#include <linux/vt.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct vt_struct;
|
||||
|
||||
|
@ -103,6 +104,7 @@ struct vc_data {
|
|||
|
||||
struct vc {
|
||||
struct vc_data *d;
|
||||
struct work_struct SAK_work;
|
||||
|
||||
/* might add scrmem, vt_struct, kbd at some time,
|
||||
to have everything in one place - the disadvantage
|
||||
|
@ -110,6 +112,7 @@ struct vc {
|
|||
};
|
||||
|
||||
extern struct vc vc_cons [MAX_NR_CONSOLES];
|
||||
extern void vc_SAK(struct work_struct *work);
|
||||
|
||||
#define CUR_DEF 0
|
||||
#define CUR_NONE 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue