diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/um/Kconfig.i386 | 7 | ||||
-rw-r--r-- | arch/um/drivers/chan_user.c | 11 | ||||
-rw-r--r-- | arch/um/os-Linux/time.c | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/arch/um/Kconfig.i386 b/arch/um/Kconfig.i386 index e0ac74e5d4c4..717f5d3440e3 100644 --- a/arch/um/Kconfig.i386 +++ b/arch/um/Kconfig.i386 | |||
@@ -8,6 +8,13 @@ config UML_X86 | |||
8 | bool | 8 | bool |
9 | default y | 9 | default y |
10 | 10 | ||
11 | config X86_32 | ||
12 | bool | ||
13 | default y | ||
14 | |||
15 | config RWSEM_XCHGADD_ALGORITHM | ||
16 | def_bool y | ||
17 | |||
11 | config 64BIT | 18 | config 64BIT |
12 | bool | 19 | bool |
13 | default n | 20 | default n |
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c index b88e93b3a39f..025764089ac8 100644 --- a/arch/um/drivers/chan_user.c +++ b/arch/um/drivers/chan_user.c | |||
@@ -74,10 +74,16 @@ void generic_free(void *data) | |||
74 | 74 | ||
75 | int generic_console_write(int fd, const char *buf, int n) | 75 | int generic_console_write(int fd, const char *buf, int n) |
76 | { | 76 | { |
77 | sigset_t old, no_sigio; | ||
77 | struct termios save, new; | 78 | struct termios save, new; |
78 | int err; | 79 | int err; |
79 | 80 | ||
80 | if (isatty(fd)) { | 81 | if (isatty(fd)) { |
82 | sigemptyset(&no_sigio); | ||
83 | sigaddset(&no_sigio, SIGIO); | ||
84 | if (sigprocmask(SIG_BLOCK, &no_sigio, &old)) | ||
85 | goto error; | ||
86 | |||
81 | CATCH_EINTR(err = tcgetattr(fd, &save)); | 87 | CATCH_EINTR(err = tcgetattr(fd, &save)); |
82 | if (err) | 88 | if (err) |
83 | goto error; | 89 | goto error; |
@@ -97,8 +103,11 @@ int generic_console_write(int fd, const char *buf, int n) | |||
97 | * Restore raw mode, in any case; we *must* ignore any error apart | 103 | * Restore raw mode, in any case; we *must* ignore any error apart |
98 | * EINTR, except for debug. | 104 | * EINTR, except for debug. |
99 | */ | 105 | */ |
100 | if (isatty(fd)) | 106 | if (isatty(fd)) { |
101 | CATCH_EINTR(tcsetattr(fd, TCSAFLUSH, &save)); | 107 | CATCH_EINTR(tcsetattr(fd, TCSAFLUSH, &save)); |
108 | sigprocmask(SIG_SETMASK, &old, NULL); | ||
109 | } | ||
110 | |||
102 | return err; | 111 | return err; |
103 | error: | 112 | error: |
104 | return -errno; | 113 | return -errno; |
diff --git a/arch/um/os-Linux/time.c b/arch/um/os-Linux/time.c index ef02d941c2ad..e49280599465 100644 --- a/arch/um/os-Linux/time.c +++ b/arch/um/os-Linux/time.c | |||
@@ -77,6 +77,7 @@ long long os_nsecs(void) | |||
77 | #ifdef UML_CONFIG_NO_HZ | 77 | #ifdef UML_CONFIG_NO_HZ |
78 | static int after_sleep_interval(struct timespec *ts) | 78 | static int after_sleep_interval(struct timespec *ts) |
79 | { | 79 | { |
80 | return 0; | ||
80 | } | 81 | } |
81 | #else | 82 | #else |
82 | static inline long long timespec_to_us(const struct timespec *ts) | 83 | static inline long long timespec_to_us(const struct timespec *ts) |