提交 5e7672ec 编写于 作者: J Jeff Dike 提交者: Linus Torvalds

[PATCH] uml: const more data

Make lots of structures const in order to make it obvious that they need no
locking.
Signed-off-by: NJeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 48af05ed
......@@ -110,7 +110,7 @@ static void not_configged_free(void *data)
"UML\n");
}
static struct chan_ops not_configged_ops = {
static const struct chan_ops not_configged_ops = {
.init = not_configged_init,
.open = not_configged_open,
.close = not_configged_close,
......@@ -373,7 +373,7 @@ int console_write_chan(struct list_head *chans, const char *buf, int len)
}
int console_open_chan(struct line *line, struct console *co,
struct chan_opts *opts)
const struct chan_opts *opts)
{
int err;
......@@ -494,10 +494,10 @@ int chan_config_string(struct list_head *chans, char *str, int size,
struct chan_type {
char *key;
struct chan_ops *ops;
const struct chan_ops *ops;
};
static struct chan_type chan_table[] = {
static const struct chan_type chan_table[] = {
{ "fd", &fd_ops },
#ifdef CONFIG_NULL_CHAN
......@@ -534,10 +534,10 @@ static struct chan_type chan_table[] = {
};
static struct chan *parse_chan(struct line *line, char *str, int device,
struct chan_opts *opts)
const struct chan_opts *opts)
{
struct chan_type *entry;
struct chan_ops *ops;
const struct chan_type *entry;
const struct chan_ops *ops;
struct chan *chan;
void *data;
int i;
......@@ -582,7 +582,7 @@ static struct chan *parse_chan(struct line *line, char *str, int device,
}
int parse_chan_pair(char *str, struct line *line, int device,
struct chan_opts *opts)
const struct chan_opts *opts)
{
struct list_head *chans = &line->chan_list;
struct chan *new, *chan;
......
......@@ -18,7 +18,7 @@ struct daemon_data {
void *dev;
};
extern struct net_user_info daemon_user_info;
extern const struct net_user_info daemon_user_info;
extern int daemon_user_write(int fd, void *buf, int len,
struct daemon_data *pri);
......
......@@ -57,7 +57,7 @@ static int daemon_write(int fd, struct sk_buff **skb,
(struct daemon_data *) &lp->user));
}
static struct net_kern_info daemon_kern_info = {
static const struct net_kern_info daemon_kern_info = {
.init = daemon_init,
.protocol = eth_protocol,
.read = daemon_read,
......
......@@ -182,7 +182,7 @@ static int daemon_set_mtu(int mtu, void *data)
return(mtu);
}
struct net_user_info daemon_user_info = {
const struct net_user_info daemon_user_info = {
.init = daemon_user_init,
.open = daemon_open,
.close = NULL,
......
......@@ -20,7 +20,7 @@ struct fd_chan {
char str[sizeof("1234567890\0")];
};
static void *fd_init(char *str, int device, struct chan_opts *opts)
static void *fd_init(char *str, int device, const struct chan_opts *opts)
{
struct fd_chan *data;
char *end;
......@@ -77,7 +77,7 @@ static void fd_close(int fd, void *d)
}
}
struct chan_ops fd_ops = {
const struct chan_ops fd_ops = {
.type = "fd",
.init = fd_init,
.open = fd_open,
......
......@@ -280,7 +280,7 @@ static int hostmixer_release(struct inode *inode, struct file *file)
/* kernel module operations */
static struct file_operations hostaudio_fops = {
static const struct file_operations hostaudio_fops = {
.owner = THIS_MODULE,
.llseek = no_llseek,
.read = hostaudio_read,
......@@ -292,7 +292,7 @@ static struct file_operations hostaudio_fops = {
.release = hostaudio_release,
};
static struct file_operations hostmixer_fops = {
static const struct file_operations hostmixer_fops = {
.owner = THIS_MODULE,
.llseek = no_llseek,
.ioctl = hostmixer_ioctl_mixdev,
......
......@@ -251,7 +251,7 @@ void line_set_termios(struct tty_struct *tty, struct termios * old)
/* nothing */
}
static struct {
static const struct {
int cmd;
char *level;
char *name;
......@@ -405,7 +405,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data,
int line_setup_irq(int fd, int input, int output, struct line *line, void *data)
{
struct line_driver *driver = line->driver;
const struct line_driver *driver = line->driver;
int err = 0, flags = IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM;
if (input)
......@@ -558,7 +558,7 @@ int line_setup(struct line *lines, unsigned int num, char *init)
}
int line_config(struct line *lines, unsigned int num, char *str,
struct chan_opts *opts)
const struct chan_opts *opts)
{
struct line *line;
char *new;
......
......@@ -13,7 +13,7 @@ struct mcast_data {
void *dev;
};
extern struct net_user_info mcast_user_info;
extern const struct net_user_info mcast_user_info;
extern int mcast_user_write(int fd, void *buf, int len,
struct mcast_data *pri);
......
......@@ -61,7 +61,7 @@ static int mcast_write(int fd, struct sk_buff **skb,
(struct mcast_data *) &lp->user);
}
static struct net_kern_info mcast_kern_info = {
static const struct net_kern_info mcast_kern_info = {
.init = mcast_init,
.protocol = eth_protocol,
.read = mcast_read,
......
......@@ -152,7 +152,7 @@ static int mcast_set_mtu(int mtu, void *data)
return(mtu);
}
struct net_user_info mcast_user_info = {
const struct net_user_info mcast_user_info = {
.init = mcast_user_init,
.open = mcast_open,
.close = mcast_close,
......
......@@ -85,7 +85,7 @@ mmapper_release(struct inode *inode, struct file *file)
return 0;
}
static struct file_operations mmapper_fops = {
static const struct file_operations mmapper_fops = {
.owner = THIS_MODULE,
.read = mmapper_read,
.write = mmapper_write,
......@@ -95,7 +95,7 @@ static struct file_operations mmapper_fops = {
.release = mmapper_release,
};
static struct miscdevice mmapper_dev = {
static const struct miscdevice mmapper_dev = {
.minor = MISC_DYNAMIC_MINOR,
.name = "mmapper",
.fops = &mmapper_fops
......
......@@ -10,7 +10,7 @@
static int null_chan;
static void *null_init(char *str, int device, struct chan_opts *opts)
static void *null_init(char *str, int device, const struct chan_opts *opts)
{
return(&null_chan);
}
......@@ -31,7 +31,7 @@ static void null_free(void *data)
{
}
struct chan_ops null_ops = {
const struct chan_ops null_ops = {
.type = "null",
.init = null_init,
.open = null_open,
......
......@@ -46,7 +46,7 @@ static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
return(-EPERM);
}
static struct net_kern_info pcap_kern_info = {
static const struct net_kern_info pcap_kern_info = {
.init = pcap_init,
.protocol = eth_protocol,
.read = pcap_read,
......
......@@ -120,7 +120,7 @@ int pcap_user_read(int fd, void *buffer, int len, struct pcap_data *pri)
return(hdata.len);
}
struct net_user_info pcap_user_info = {
const struct net_user_info pcap_user_info = {
.init = pcap_user_init,
.open = pcap_open,
.close = NULL,
......
......@@ -27,7 +27,7 @@ struct port_chan {
char dev[sizeof("32768\0")];
};
static void *port_init(char *str, int device, struct chan_opts *opts)
static void *port_init(char *str, int device, const struct chan_opts *opts)
{
struct port_chan *data;
void *kern_data;
......@@ -100,7 +100,7 @@ static void port_close(int fd, void *d)
os_close_file(fd);
}
struct chan_ops port_ops = {
const struct chan_ops port_ops = {
.type = "port",
.init = port_init,
.open = port_open,
......
......@@ -22,7 +22,7 @@ struct pty_chan {
char dev_name[sizeof("/dev/pts/0123456\0")];
};
static void *pty_chan_init(char *str, int device, struct chan_opts *opts)
static void *pty_chan_init(char *str, int device, const struct chan_opts *opts)
{
struct pty_chan *data;
......@@ -118,7 +118,7 @@ static int pty_open(int input, int output, int primary, void *d,
return(fd);
}
struct chan_ops pty_ops = {
const struct chan_ops pty_ops = {
.type = "pty",
.init = pty_chan_init,
.open = pty_open,
......@@ -131,7 +131,7 @@ struct chan_ops pty_ops = {
.winch = 0,
};
struct chan_ops pts_ops = {
const struct chan_ops pts_ops = {
.type = "pts",
.init = pty_chan_init,
.open = pts_open,
......
......@@ -68,7 +68,7 @@ static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size,
return ret;
}
static struct file_operations rng_chrdev_ops = {
static const struct file_operations rng_chrdev_ops = {
.owner = THIS_MODULE,
.open = rng_dev_open,
.read = rng_dev_read,
......
......@@ -12,7 +12,7 @@ struct slip_data {
struct slip_proto slip;
};
extern struct net_user_info slip_user_info;
extern const struct net_user_info slip_user_info;
extern int slip_user_read(int fd, void *buf, int len, struct slip_data *pri);
extern int slip_user_write(int fd, void *buf, int len, struct slip_data *pri);
......
......@@ -61,7 +61,7 @@ static int slip_write(int fd, struct sk_buff **skb,
(struct slip_data *) &lp->user));
}
struct net_kern_info slip_kern_info = {
const struct net_kern_info slip_kern_info = {
.init = slip_init,
.protocol = slip_protocol,
.read = slip_read,
......
......@@ -241,7 +241,7 @@ static void slip_del_addr(unsigned char *addr, unsigned char *netmask,
close_addr(addr, netmask, pri->name);
}
struct net_user_info slip_user_info = {
const struct net_user_info slip_user_info = {
.init = slip_user_init,
.open = slip_open,
.close = slip_close,
......
......@@ -24,7 +24,7 @@ struct slirp_data {
struct slip_proto slip;
};
extern struct net_user_info slirp_user_info;
extern const struct net_user_info slirp_user_info;
extern int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri);
extern int slirp_user_write(int fd, void *buf, int len,
......
......@@ -64,7 +64,7 @@ static int slirp_write(int fd, struct sk_buff **skb,
(struct slirp_data *) &lp->user));
}
struct net_kern_info slirp_kern_info = {
const struct net_kern_info slirp_kern_info = {
.init = slirp_init,
.protocol = slirp_protocol,
.read = slirp_read,
......
......@@ -126,7 +126,7 @@ static int slirp_set_mtu(int mtu, void *data)
return(mtu);
}
struct net_user_info slirp_user_info = {
const struct net_user_info slirp_user_info = {
.init = slirp_user_init,
.open = slirp_open,
.close = slirp_close,
......
......@@ -23,7 +23,7 @@
#include "irq_user.h"
#include "mconsole_kern.h"
static int ssl_version = 1;
static const int ssl_version = 1;
/* Referenced only by tty_driver below - presumably it's locked correctly
* by the tty driver.
......@@ -123,7 +123,7 @@ void ssl_hangup(struct tty_struct *tty)
}
#endif
static struct tty_operations ssl_ops = {
static const struct tty_operations ssl_ops = {
.open = ssl_open,
.close = line_close,
.write = line_write,
......
......@@ -110,7 +110,7 @@ static int con_open(struct tty_struct *tty, struct file *filp)
static int con_init_done = 0;
static struct tty_operations console_ops = {
static const struct tty_operations console_ops = {
.open = con_open,
.close = line_close,
.write = line_write,
......
......@@ -18,7 +18,7 @@ struct tty_chan {
struct termios tt;
};
static void *tty_chan_init(char *str, int device, struct chan_opts *opts)
static void *tty_chan_init(char *str, int device, const struct chan_opts *opts)
{
struct tty_chan *data;
......@@ -62,7 +62,7 @@ static int tty_open(int input, int output, int primary, void *d,
return fd;
}
struct chan_ops tty_ops = {
const struct chan_ops tty_ops = {
.type = "tty",
.init = tty_chan_init,
.open = tty_open,
......
......@@ -31,7 +31,7 @@ struct xterm_chan {
};
/* Not static because it's called directly by the tt mode gdb code */
void *xterm_init(char *str, int device, struct chan_opts *opts)
void *xterm_init(char *str, int device, const struct chan_opts *opts)
{
struct xterm_chan *data;
......@@ -194,7 +194,7 @@ static void xterm_free(void *d)
free(d);
}
struct chan_ops xterm_ops = {
const struct chan_ops xterm_ops = {
.type = "xterm",
.init = xterm_init,
.open = xterm_open,
......
......@@ -23,21 +23,21 @@ struct chan {
unsigned int opened:1;
unsigned int enabled:1;
int fd;
struct chan_ops *ops;
const struct chan_ops *ops;
void *data;
};
extern void chan_interrupt(struct list_head *chans, struct work_struct *task,
struct tty_struct *tty, int irq);
extern int parse_chan_pair(char *str, struct line *line, int device,
struct chan_opts *opts);
const struct chan_opts *opts);
extern int open_chan(struct list_head *chans);
extern int write_chan(struct list_head *chans, const char *buf, int len,
int write_irq);
extern int console_write_chan(struct list_head *chans, const char *buf,
int len);
extern int console_open_chan(struct line *line, struct console *co,
struct chan_opts *opts);
const struct chan_opts *opts);
extern void deactivate_chan(struct list_head *chans, int irq);
extern void reactivate_chan(struct list_head *chans, int irq);
extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty);
......
......@@ -20,7 +20,7 @@ enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE };
struct chan_ops {
char *type;
void *(*init)(char *, int, struct chan_opts *);
void *(*init)(char *, int, const struct chan_opts *);
int (*open)(int, int, int, void *, char **);
void (*close)(int, void *);
int (*read)(int, char *, void *);
......@@ -31,8 +31,8 @@ struct chan_ops {
int winch;
};
extern struct chan_ops fd_ops, null_ops, port_ops, pts_ops, pty_ops, tty_ops,
xterm_ops;
extern const struct chan_ops fd_ops, null_ops, port_ops, pts_ops, pty_ops,
tty_ops, xterm_ops;
extern void generic_close(int fd, void *unused);
extern int generic_read(int fd, char *c_out, void *unused);
......
......@@ -21,7 +21,7 @@ struct kern_handlers {
kern_hndl timer_handler;
};
extern struct kern_handlers handlinfo_kern;
extern const struct kern_handlers handlinfo_kern;
extern int ncpus;
extern char *linux_prog;
......
......@@ -52,7 +52,7 @@ struct line {
int sigio;
struct work_struct task;
struct line_driver *driver;
const struct line_driver *driver;
int have_irq;
};
......@@ -99,7 +99,7 @@ extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts);
extern void close_lines(struct line *lines, int nlines);
extern int line_config(struct line *lines, unsigned int sizeof_lines,
char *str, struct chan_opts *opts);
char *str, const struct chan_opts *opts);
extern int line_id(char **str, int *start_out, int *end_out);
extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n);
extern int line_get_config(char *dev, struct line *lines,
......
......@@ -54,8 +54,8 @@ struct transport {
struct list_head list;
char *name;
int (*setup)(char *, char **, void *);
struct net_user_info *user;
struct net_kern_info *kern;
const struct net_user_info *user;
const struct net_kern_info *kern;
int private_size;
int setup_size;
};
......
......@@ -140,7 +140,7 @@ void segv_handler(int sig, union uml_pt_regs *regs)
segv(*fi, UPT_IP(regs), UPT_IS_USER(regs), regs);
}
struct kern_handlers handlinfo_kern = {
const struct kern_handlers handlinfo_kern = {
.relay_signal = relay_signal,
.winch = winch,
.bus_handler = relay_signal,
......
......@@ -106,7 +106,7 @@ static void c_stop(struct seq_file *m, void *v)
{
}
struct seq_operations cpuinfo_op = {
const struct seq_operations cpuinfo_op = {
.start = c_start,
.next = c_next,
.stop = c_stop,
......
......@@ -13,7 +13,7 @@ struct ethertap_data {
void *dev;
};
extern struct net_user_info ethertap_user_info;
extern const struct net_user_info ethertap_user_info;
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
......
......@@ -65,7 +65,7 @@ static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
return(net_send(fd, (*skb)->data, (*skb)->len));
}
struct net_kern_info ethertap_kern_info = {
const struct net_kern_info ethertap_kern_info = {
.init = etap_init,
.protocol = eth_protocol,
.read = etap_read,
......
......@@ -216,7 +216,7 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask,
etap_close_addr(addr, netmask, &pri->control_fd);
}
struct net_user_info ethertap_user_info = {
const struct net_user_info ethertap_user_info = {
.init = etap_user_init,
.open = etap_open,
.close = etap_close,
......
......@@ -16,7 +16,7 @@ struct tuntap_data {
void *dev;
};
extern struct net_user_info tuntap_user_info;
extern const struct net_user_info tuntap_user_info;
#endif
......
......@@ -53,7 +53,7 @@ static int tuntap_write(int fd, struct sk_buff **skb,
return(net_write(fd, (*skb)->data, (*skb)->len));
}
struct net_kern_info tuntap_kern_info = {
const struct net_kern_info tuntap_kern_info = {
.init = tuntap_init,
.protocol = eth_protocol,
.read = tuntap_read,
......
......@@ -205,7 +205,7 @@ static int tuntap_set_mtu(int mtu, void *data)
return(mtu);
}
struct net_user_info tuntap_user_info = {
const struct net_user_info tuntap_user_info = {
.init = tuntap_user_init,
.open = tuntap_open,
.close = tuntap_close,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册