* [PATCH 3/5] UML - Locking documentation
@ 2006-09-27 17:57 Jeff Dike
0 siblings, 0 replies; only message in thread
From: Jeff Dike @ 2006-09-27 17:57 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel, user-mode-linux-devel
Some locking documentation and a cleanup. uml_exitcode is copied
into a local before sprintf sees it, in case sprintf does anything
non-atomic with it.
The rest are comments about why certain globals don't need any kind
of locking.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
---
arch/um/drivers/null.c | 1 +
arch/um/drivers/random.c | 4 ++++
arch/um/drivers/stderr_console.c | 2 ++
arch/um/drivers/stdio_console.c | 1 +
arch/um/kernel/exitcode.c | 8 ++++++--
5 files changed, 14 insertions(+), 2 deletions(-)
Index: linux-2.6.18-mm/arch/um/kernel/exitcode.c
===================================================================
--- linux-2.6.18-mm.orig/arch/um/kernel/exitcode.c 2006-09-26 16:28:49.000000000 -0400
+++ linux-2.6.18-mm/arch/um/kernel/exitcode.c 2006-09-26 16:29:14.000000000 -0400
@@ -16,9 +16,13 @@ int uml_exitcode = 0;
static int read_proc_exitcode(char *page, char **start, off_t off,
int count, int *eof, void *data)
{
- int len;
+ int len, val;
- len = sprintf(page, "%d\n", uml_exitcode);
+ /* Save uml_exitcode in a local so that we don't need to guarantee
+ * that sprintf accesses it atomically.
+ */
+ val = uml_exitcode;
+ len = sprintf(page, "%d\n", val);
len -= off;
if(len <= off+count) *eof = 1;
*start = page + off;
Index: linux-2.6.18-mm/arch/um/drivers/null.c
===================================================================
--- linux-2.6.18-mm.orig/arch/um/drivers/null.c 2006-09-26 16:28:49.000000000 -0400
+++ linux-2.6.18-mm/arch/um/drivers/null.c 2006-09-26 16:29:39.000000000 -0400
@@ -8,6 +8,7 @@
#include "chan_user.h"
#include "os.h"
+/* This address is used only as a unique identifer */
static int null_chan;
static void *null_init(char *str, int device, const struct chan_opts *opts)
Index: linux-2.6.18-mm/arch/um/drivers/random.c
===================================================================
--- linux-2.6.18-mm.orig/arch/um/drivers/random.c 2006-09-26 16:28:49.000000000 -0400
+++ linux-2.6.18-mm/arch/um/drivers/random.c 2006-09-26 16:29:39.000000000 -0400
@@ -20,6 +20,10 @@
#define RNG_MISCDEV_MINOR 183 /* official */
+/* Changed at init time, in the non-modular case, and at module load
+ * time, in the module case. Presumably, the module subsystem
+ * protects against a module being loaded twice at the same time.
+ */
static int random_fd = -1;
static int rng_dev_open (struct inode *inode, struct file *filp)
Index: linux-2.6.18-mm/arch/um/drivers/stderr_console.c
===================================================================
--- linux-2.6.18-mm.orig/arch/um/drivers/stderr_console.c 2006-09-26 16:28:49.000000000 -0400
+++ linux-2.6.18-mm/arch/um/drivers/stderr_console.c 2006-09-26 16:29:39.000000000 -0400
@@ -9,6 +9,8 @@
/*
* Don't register by default -- as this registeres very early in the
* boot process it becomes the default console.
+ *
+ * Initialized at init time.
*/
static int use_stderr_console = 0;
Index: linux-2.6.18-mm/arch/um/drivers/stdio_console.c
===================================================================
--- linux-2.6.18-mm.orig/arch/um/drivers/stdio_console.c 2006-09-26 16:28:49.000000000 -0400
+++ linux-2.6.18-mm/arch/um/drivers/stdio_console.c 2006-09-26 16:29:39.000000000 -0400
@@ -107,6 +107,7 @@ static int con_open(struct tty_struct *t
return line_open(vts, tty);
}
+/* Set in an initcall, checked in an exitcall */
static int con_init_done = 0;
static const struct tty_operations console_ops = {
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-09-27 17:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-27 17:57 [PATCH 3/5] UML - Locking documentation Jeff Dike
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome