Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
9abe4b72
Commit
9abe4b72
authored
Jan 15, 2003
by
Jeff Dike
Browse files
Options
Browse Files
Download
Plain Diff
Merge jdike.stearns.org:linux/cleanup-2.5/
into uml.karaya.com:/home/jdike/linux/2.5/cleanup-2.5
parents
eec91b48
da0763c6
Changes
54
Show whitespace changes
Inline
Side-by-side
Showing
54 changed files
with
652 additions
and
651 deletions
+652
-651
arch/um/drivers/chan_kern.c
arch/um/drivers/chan_kern.c
+18
-18
arch/um/drivers/chan_user.c
arch/um/drivers/chan_user.c
+3
-3
arch/um/drivers/daemon_kern.c
arch/um/drivers/daemon_kern.c
+21
-21
arch/um/drivers/daemon_user.c
arch/um/drivers/daemon_user.c
+8
-8
arch/um/drivers/fd.c
arch/um/drivers/fd.c
+12
-12
arch/um/drivers/harddog_kern.c
arch/um/drivers/harddog_kern.c
+8
-8
arch/um/drivers/hostaudio_kern.c
arch/um/drivers/hostaudio_kern.c
+14
-14
arch/um/drivers/line.c
arch/um/drivers/line.c
+6
-6
arch/um/drivers/mcast_kern.c
arch/um/drivers/mcast_kern.c
+19
-19
arch/um/drivers/mcast_user.c
arch/um/drivers/mcast_user.c
+8
-8
arch/um/drivers/mconsole_kern.c
arch/um/drivers/mconsole_kern.c
+5
-5
arch/um/drivers/mmapper_kern.c
arch/um/drivers/mmapper_kern.c
+7
-7
arch/um/drivers/net_kern.c
arch/um/drivers/net_kern.c
+24
-23
arch/um/drivers/null.c
arch/um/drivers/null.c
+10
-10
arch/um/drivers/pcap_kern.c
arch/um/drivers/pcap_kern.c
+21
-21
arch/um/drivers/pcap_user.c
arch/um/drivers/pcap_user.c
+10
-10
arch/um/drivers/port_kern.c
arch/um/drivers/port_kern.c
+62
-53
arch/um/drivers/port_user.c
arch/um/drivers/port_user.c
+37
-28
arch/um/drivers/pty.c
arch/um/drivers/pty.c
+24
-43
arch/um/drivers/slip_kern.c
arch/um/drivers/slip_kern.c
+21
-21
arch/um/drivers/slip_user.c
arch/um/drivers/slip_user.c
+8
-8
arch/um/drivers/slirp_kern.c
arch/um/drivers/slirp_kern.c
+19
-19
arch/um/drivers/slirp_user.c
arch/um/drivers/slirp_user.c
+8
-8
arch/um/drivers/ssl.c
arch/um/drivers/ssl.c
+37
-37
arch/um/drivers/stdio_console.c
arch/um/drivers/stdio_console.c
+47
-47
arch/um/drivers/tty.c
arch/um/drivers/tty.c
+12
-12
arch/um/drivers/ubd_kern.c
arch/um/drivers/ubd_kern.c
+3
-3
arch/um/drivers/xterm.c
arch/um/drivers/xterm.c
+17
-17
arch/um/drivers/xterm_kern.c
arch/um/drivers/xterm_kern.c
+7
-7
arch/um/include/signal_kern.h
arch/um/include/signal_kern.h
+1
-5
arch/um/include/umid.h
arch/um/include/umid.h
+5
-0
arch/um/kernel/frame.c
arch/um/kernel/frame.c
+2
-1
arch/um/kernel/irq_user.c
arch/um/kernel/irq_user.c
+14
-14
arch/um/kernel/ksyms.c
arch/um/kernel/ksyms.c
+5
-0
arch/um/kernel/mem.c
arch/um/kernel/mem.c
+20
-20
arch/um/kernel/sigio_user.c
arch/um/kernel/sigio_user.c
+18
-17
arch/um/kernel/signal_kern.c
arch/um/kernel/signal_kern.c
+0
-12
arch/um/kernel/skas/include/uaccess.h
arch/um/kernel/skas/include/uaccess.h
+0
-3
arch/um/kernel/skas/tlb.c
arch/um/kernel/skas/tlb.c
+0
-1
arch/um/kernel/time.c
arch/um/kernel/time.c
+1
-1
arch/um/kernel/trap_kern.c
arch/um/kernel/trap_kern.c
+2
-1
arch/um/kernel/tt/gdb.c
arch/um/kernel/tt/gdb.c
+5
-5
arch/um/kernel/tt/gdb_kern.c
arch/um/kernel/tt/gdb_kern.c
+3
-3
arch/um/kernel/tt/ptproxy/proxy.c
arch/um/kernel/tt/ptproxy/proxy.c
+8
-8
arch/um/kernel/um_arch.c
arch/um/kernel/um_arch.c
+12
-7
arch/um/kernel/umid.c
arch/um/kernel/umid.c
+0
-1
arch/um/os-Linux/drivers/ethertap_kern.c
arch/um/os-Linux/drivers/ethertap_kern.c
+17
-17
arch/um/os-Linux/drivers/ethertap_user.c
arch/um/os-Linux/drivers/ethertap_user.c
+8
-8
arch/um/os-Linux/drivers/tuntap_kern.c
arch/um/os-Linux/drivers/tuntap_kern.c
+18
-18
arch/um/os-Linux/drivers/tuntap_user.c
arch/um/os-Linux/drivers/tuntap_user.c
+8
-8
arch/um/os-Linux/file.c
arch/um/os-Linux/file.c
+2
-2
arch/um/sys-i386/Makefile
arch/um/sys-i386/Makefile
+2
-1
include/asm-um/pgtable.h
include/asm-um/pgtable.h
+3
-0
include/asm-um/processor-i386.h
include/asm-um/processor-i386.h
+2
-2
No files found.
arch/um/drivers/chan_kern.c
View file @
9abe4b72
...
@@ -75,15 +75,15 @@ static void not_configged_free(void *data)
...
@@ -75,15 +75,15 @@ static void not_configged_free(void *data)
}
}
static
struct
chan_ops
not_configged_ops
=
{
static
struct
chan_ops
not_configged_ops
=
{
init:
not_configged_init
,
.
init
=
not_configged_init
,
open:
not_configged_open
,
.
open
=
not_configged_open
,
close:
not_configged_close
,
.
close
=
not_configged_close
,
read:
not_configged_read
,
.
read
=
not_configged_read
,
write:
not_configged_write
,
.
write
=
not_configged_write
,
console_write:
not_configged_console_write
,
.
console_write
=
not_configged_console_write
,
window_size:
not_configged_window_size
,
.
window_size
=
not_configged_window_size
,
free:
not_configged_free
,
.
free
=
not_configged_free
,
winch:
0
,
.
winch
=
0
,
};
};
static
void
tty_receive_char
(
struct
tty_struct
*
tty
,
char
ch
)
static
void
tty_receive_char
(
struct
tty_struct
*
tty
,
char
ch
)
...
@@ -395,15 +395,15 @@ static struct chan *parse_chan(char *str, int pri, int device,
...
@@ -395,15 +395,15 @@ static struct chan *parse_chan(char *str, int pri, int device,
chan
=
kmalloc
(
sizeof
(
*
chan
),
GFP_KERNEL
);
chan
=
kmalloc
(
sizeof
(
*
chan
),
GFP_KERNEL
);
if
(
chan
==
NULL
)
return
(
NULL
);
if
(
chan
==
NULL
)
return
(
NULL
);
*
chan
=
((
struct
chan
)
{
list
:
LIST_HEAD_INIT
(
chan
->
list
),
*
chan
=
((
struct
chan
)
{
.
list
=
LIST_HEAD_INIT
(
chan
->
list
),
primary
:
1
,
.
primary
=
1
,
input
:
0
,
.
input
=
0
,
output
:
0
,
.
output
=
0
,
opened
:
0
,
.
opened
=
0
,
fd
:
-
1
,
.
fd
=
-
1
,
pri
:
pri
,
.
pri
=
pri
,
ops
:
ops
,
.
ops
=
ops
,
data
:
data
});
.
data
=
data
});
return
(
chan
);
return
(
chan
);
}
}
...
...
arch/um/drivers/chan_user.c
View file @
9abe4b72
...
@@ -159,9 +159,9 @@ static int winch_tramp(int fd, void *device_data, int *fd_out)
...
@@ -159,9 +159,9 @@ static int winch_tramp(int fd, void *device_data, int *fd_out)
return
(
err
);
return
(
err
);
}
}
data
=
((
struct
winch_data
)
{
pty_fd
:
fd
,
data
=
((
struct
winch_data
)
{
.
pty_fd
=
fd
,
pipe_fd
:
fds
[
1
],
.
pipe_fd
=
fds
[
1
],
close_me
:
fds
[
0
]
}
);
.
close_me
=
fds
[
0
]
}
);
pid
=
run_helper_thread
(
winch_thread
,
&
data
,
0
,
&
stack
,
0
);
pid
=
run_helper_thread
(
winch_thread
,
&
data
,
0
,
&
stack
,
0
);
if
(
pid
<
0
){
if
(
pid
<
0
){
printk
(
"fork of winch_thread failed - errno = %d
\n
"
,
errno
);
printk
(
"fork of winch_thread failed - errno = %d
\n
"
,
errno
);
...
...
arch/um/drivers/daemon_kern.c
View file @
9abe4b72
...
@@ -28,14 +28,14 @@ void daemon_init(struct net_device *dev, void *data)
...
@@ -28,14 +28,14 @@ void daemon_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
pri
=
dev
->
priv
;
dpri
=
(
struct
daemon_data
*
)
pri
->
user
;
dpri
=
(
struct
daemon_data
*
)
pri
->
user
;
*
dpri
=
((
struct
daemon_data
)
*
dpri
=
((
struct
daemon_data
)
{
sock_type
:
init
->
sock_type
,
{
.
sock_type
=
init
->
sock_type
,
ctl_sock
:
init
->
ctl_sock
,
.
ctl_sock
=
init
->
ctl_sock
,
ctl_addr
:
NULL
,
.
ctl_addr
=
NULL
,
data_addr
:
NULL
,
.
data_addr
=
NULL
,
local_addr
:
NULL
,
.
local_addr
=
NULL
,
fd
:
-
1
,
.
fd
=
-
1
,
control
:
-
1
,
.
control
=
-
1
,
dev
:
dev
});
.
dev
=
dev
});
printk
(
"daemon backend (uml_switch version %d) - %s:%s"
,
printk
(
"daemon backend (uml_switch version %d) - %s:%s"
,
SWITCH_VERSION
,
dpri
->
sock_type
,
dpri
->
ctl_sock
);
SWITCH_VERSION
,
dpri
->
sock_type
,
dpri
->
ctl_sock
);
...
@@ -59,10 +59,10 @@ static int daemon_write(int fd, struct sk_buff **skb,
...
@@ -59,10 +59,10 @@ static int daemon_write(int fd, struct sk_buff **skb,
}
}
static
struct
net_kern_info
daemon_kern_info
=
{
static
struct
net_kern_info
daemon_kern_info
=
{
init:
daemon_init
,
.
init
=
daemon_init
,
protocol:
eth_protocol
,
.
protocol
=
eth_protocol
,
read:
daemon_read
,
.
read
=
daemon_read
,
write:
daemon_write
,
.
write
=
daemon_write
,
};
};
int
daemon_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
int
daemon_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -71,8 +71,8 @@ int daemon_setup(char *str, char **mac_out, void *data)
...
@@ -71,8 +71,8 @@ int daemon_setup(char *str, char **mac_out, void *data)
char
*
remain
;
char
*
remain
;
*
init
=
((
struct
daemon_init
)
*
init
=
((
struct
daemon_init
)
{
sock_type
:
"unix"
,
{
.
sock_type
=
"unix"
,
ctl_sock
:
"/tmp/uml.ctl"
});
.
ctl_sock
=
"/tmp/uml.ctl"
});
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
sock_type
,
&
init
->
ctl_sock
,
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
sock_type
,
&
init
->
ctl_sock
,
NULL
);
NULL
);
...
@@ -84,13 +84,13 @@ int daemon_setup(char *str, char **mac_out, void *data)
...
@@ -84,13 +84,13 @@ int daemon_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
daemon_transport
=
{
static
struct
transport
daemon_transport
=
{
list
:
LIST_HEAD_INIT
(
daemon_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
daemon_transport
.
list
),
name
:
"daemon"
,
.
name
=
"daemon"
,
setup
:
daemon_setup
,
.
setup
=
daemon_setup
,
user
:
&
daemon_user_info
,
.
user
=
&
daemon_user_info
,
kern
:
&
daemon_kern_info
,
.
kern
=
&
daemon_kern_info
,
private_size
:
sizeof
(
struct
daemon_data
),
.
private_size
=
sizeof
(
struct
daemon_data
),
setup_size
:
sizeof
(
struct
daemon_init
),
.
setup_size
=
sizeof
(
struct
daemon_init
),
};
};
static
int
register_daemon
(
void
)
static
int
register_daemon
(
void
)
...
...
arch/um/drivers/daemon_user.c
View file @
9abe4b72
...
@@ -172,14 +172,14 @@ static int daemon_set_mtu(int mtu, void *data)
...
@@ -172,14 +172,14 @@ static int daemon_set_mtu(int mtu, void *data)
}
}
struct
net_user_info
daemon_user_info
=
{
struct
net_user_info
daemon_user_info
=
{
init:
daemon_user_init
,
.
init
=
daemon_user_init
,
open:
daemon_open
,
.
open
=
daemon_open
,
close:
NULL
,
.
close
=
NULL
,
remove:
daemon_remove
,
.
remove
=
daemon_remove
,
set_mtu:
daemon_set_mtu
,
.
set_mtu
=
daemon_set_mtu
,
add_address:
NULL
,
.
add_address
=
NULL
,
delete_address:
NULL
,
.
delete_address
=
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
};
/*
/*
...
...
arch/um/drivers/fd.c
View file @
9abe4b72
...
@@ -36,8 +36,8 @@ void *fd_init(char *str, int device, struct chan_opts *opts)
...
@@ -36,8 +36,8 @@ void *fd_init(char *str, int device, struct chan_opts *opts)
return
(
NULL
);
return
(
NULL
);
}
}
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
fd_chan
)
{
fd
:
n
,
*
data
=
((
struct
fd_chan
)
{
.
fd
=
n
,
raw
:
opts
->
raw
});
.
raw
=
opts
->
raw
});
return
(
data
);
return
(
data
);
}
}
...
@@ -72,16 +72,16 @@ int fd_console_write(int fd, const char *buf, int n, void *d)
...
@@ -72,16 +72,16 @@ int fd_console_write(int fd, const char *buf, int n, void *d)
}
}
struct
chan_ops
fd_ops
=
{
struct
chan_ops
fd_ops
=
{
type:
"fd"
,
.
type
=
"fd"
,
init:
fd_init
,
.
init
=
fd_init
,
open:
fd_open
,
.
open
=
fd_open
,
close:
fd_close
,
.
close
=
fd_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
fd_console_write
,
.
console_write
=
fd_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
generic_free
,
.
free
=
generic_free
,
winch:
1
,
.
winch
=
1
,
};
};
/*
/*
...
...
arch/um/drivers/harddog_kern.c
View file @
9abe4b72
...
@@ -145,17 +145,17 @@ static int harddog_ioctl(struct inode *inode, struct file *file,
...
@@ -145,17 +145,17 @@ static int harddog_ioctl(struct inode *inode, struct file *file,
}
}
static
struct
file_operations
harddog_fops
=
{
static
struct
file_operations
harddog_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
write:
harddog_write
,
.
write
=
harddog_write
,
ioctl:
harddog_ioctl
,
.
ioctl
=
harddog_ioctl
,
open:
harddog_open
,
.
open
=
harddog_open
,
release:
harddog_release
,
.
release
=
harddog_release
,
};
};
static
struct
miscdevice
harddog_miscdev
=
{
static
struct
miscdevice
harddog_miscdev
=
{
minor:
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
name:
"watchdog"
,
.
name
=
"watchdog"
,
fops:
&
harddog_fops
,
.
fops
=
&
harddog_fops
,
};
};
static
char
banner
[]
__initdata
=
KERN_INFO
"UML Watchdog Timer
\n
"
;
static
char
banner
[]
__initdata
=
KERN_INFO
"UML Watchdog Timer
\n
"
;
...
...
arch/um/drivers/hostaudio_kern.c
View file @
9abe4b72
...
@@ -195,23 +195,23 @@ static int hostmixer_release(struct inode *inode, struct file *file)
...
@@ -195,23 +195,23 @@ static int hostmixer_release(struct inode *inode, struct file *file)
/* kernel module operations */
/* kernel module operations */
static
struct
file_operations
hostaudio_fops
=
{
static
struct
file_operations
hostaudio_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
llseek:
no_llseek
,
.
llseek
=
no_llseek
,
read:
hostaudio_read
,
.
read
=
hostaudio_read
,
write:
hostaudio_write
,
.
write
=
hostaudio_write
,
poll:
hostaudio_poll
,
.
poll
=
hostaudio_poll
,
ioctl:
hostaudio_ioctl
,
.
ioctl
=
hostaudio_ioctl
,
mmap:
NULL
,
.
mmap
=
NULL
,
open:
hostaudio_open
,
.
open
=
hostaudio_open
,
release:
hostaudio_release
,
.
release
=
hostaudio_release
,
};
};
static
struct
file_operations
hostmixer_fops
=
{
static
struct
file_operations
hostmixer_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
llseek:
no_llseek
,
.
llseek
=
no_llseek
,
ioctl:
hostmixer_ioctl_mixdev
,
.
ioctl
=
hostmixer_ioctl_mixdev
,
open:
hostmixer_open_mixdev
,
.
open
=
hostmixer_open_mixdev
,
release:
hostmixer_release
,
.
release
=
hostmixer_release
,
};
};
struct
{
struct
{
...
...
arch/um/drivers/line.c
View file @
9abe4b72
...
@@ -35,7 +35,7 @@ void line_timer_cb(void *arg)
...
@@ -35,7 +35,7 @@ void line_timer_cb(void *arg)
line_interrupt
(
dev
->
driver
->
read_irq
,
dev
,
NULL
);
line_interrupt
(
dev
->
driver
->
read_irq
,
dev
,
NULL
);
}
}
void
buffer_data
(
struct
line
*
line
,
const
char
*
buf
,
int
len
)
static
void
buffer_data
(
struct
line
*
line
,
const
char
*
buf
,
int
len
)
{
{
int
end
;
int
end
;
...
@@ -511,11 +511,11 @@ void register_winch_irq(int fd, int tty_fd, int pid, void *line)
...
@@ -511,11 +511,11 @@ void register_winch_irq(int fd, int tty_fd, int pid, void *line)
printk
(
"register_winch_irq - kmalloc failed
\n
"
);
printk
(
"register_winch_irq - kmalloc failed
\n
"
);
goto
out
;
goto
out
;
}
}
*
winch
=
((
struct
winch
)
{
list
:
LIST_HEAD_INIT
(
winch
->
list
),
*
winch
=
((
struct
winch
)
{
.
list
=
LIST_HEAD_INIT
(
winch
->
list
),
fd
:
fd
,
.
fd
=
fd
,
tty_fd
:
tty_fd
,
.
tty_fd
=
tty_fd
,
pid
:
pid
,
.
pid
=
pid
,
line
:
line
});
.
line
=
line
});
list_add
(
&
winch
->
list
,
&
winch_handlers
);
list_add
(
&
winch
->
list
,
&
winch_handlers
);
if
(
um_request_irq
(
WINCH_IRQ
,
fd
,
IRQ_READ
,
winch_interrupt
,
if
(
um_request_irq
(
WINCH_IRQ
,
fd
,
IRQ_READ
,
winch_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
...
...
arch/um/drivers/mcast_kern.c
View file @
9abe4b72
...
@@ -36,11 +36,11 @@ void mcast_init(struct net_device *dev, void *data)
...
@@ -36,11 +36,11 @@ void mcast_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
pri
=
dev
->
priv
;
dpri
=
(
struct
mcast_data
*
)
pri
->
user
;
dpri
=
(
struct
mcast_data
*
)
pri
->
user
;
*
dpri
=
((
struct
mcast_data
)
*
dpri
=
((
struct
mcast_data
)
{
addr
:
init
->
addr
,
{
.
addr
=
init
->
addr
,
port
:
init
->
port
,
.
port
=
init
->
port
,
ttl
:
init
->
ttl
,
.
ttl
=
init
->
ttl
,
mcast_addr
:
NULL
,
.
mcast_addr
=
NULL
,
dev
:
dev
});
.
dev
=
dev
});
printk
(
"mcast backend "
);
printk
(
"mcast backend "
);
printk
(
"multicast adddress: %s:%u, TTL:%u "
,
printk
(
"multicast adddress: %s:%u, TTL:%u "
,
dpri
->
addr
,
dpri
->
port
,
dpri
->
ttl
);
dpri
->
addr
,
dpri
->
port
,
dpri
->
ttl
);
...
@@ -64,10 +64,10 @@ static int mcast_write(int fd, struct sk_buff **skb,
...
@@ -64,10 +64,10 @@ static int mcast_write(int fd, struct sk_buff **skb,
}
}
static
struct
net_kern_info
mcast_kern_info
=
{
static
struct
net_kern_info
mcast_kern_info
=
{
init:
mcast_init
,
.
init
=
mcast_init
,
protocol:
eth_protocol
,
.
protocol
=
eth_protocol
,
read:
mcast_read
,
.
read
=
mcast_read
,
write:
mcast_write
,
.
write
=
mcast_write
,
};
};
int
mcast_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
int
mcast_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -78,9 +78,9 @@ int mcast_setup(char *str, char **mac_out, void *data)
...
@@ -78,9 +78,9 @@ int mcast_setup(char *str, char **mac_out, void *data)
int
n
;
int
n
;
*
init
=
((
struct
mcast_init
)
*
init
=
((
struct
mcast_init
)
{
addr
:
"239.192.168.1"
,
{
.
addr
=
"239.192.168.1"
,
port
:
1102
,
.
port
=
1102
,
ttl
:
1
});
.
ttl
=
1
});
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
addr
,
&
port_str
,
&
ttl_str
,
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
addr
,
&
port_str
,
&
ttl_str
,
NULL
);
NULL
);
...
@@ -116,13 +116,13 @@ int mcast_setup(char *str, char **mac_out, void *data)
...
@@ -116,13 +116,13 @@ int mcast_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
mcast_transport
=
{
static
struct
transport
mcast_transport
=
{
list
:
LIST_HEAD_INIT
(
mcast_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
mcast_transport
.
list
),
name
:
"mcast"
,
.
name
=
"mcast"
,
setup
:
mcast_setup
,
.
setup
=
mcast_setup
,
user
:
&
mcast_user_info
,
.
user
=
&
mcast_user_info
,
kern
:
&
mcast_kern_info
,
.
kern
=
&
mcast_kern_info
,
private_size
:
sizeof
(
struct
mcast_data
),
.
private_size
=
sizeof
(
struct
mcast_data
),
setup_size
:
sizeof
(
struct
mcast_init
),
.
setup_size
=
sizeof
(
struct
mcast_init
),
};
};
static
int
register_mcast
(
void
)
static
int
register_mcast
(
void
)
...
...
arch/um/drivers/mcast_user.c
View file @
9abe4b72
...
@@ -153,14 +153,14 @@ static int mcast_set_mtu(int mtu, void *data)
...
@@ -153,14 +153,14 @@ static int mcast_set_mtu(int mtu, void *data)
}
}
struct
net_user_info
mcast_user_info
=
{
struct
net_user_info
mcast_user_info
=
{
init:
mcast_user_init
,
.
init
=
mcast_user_init
,
open:
mcast_open
,
.
open
=
mcast_open
,
close:
mcast_close
,
.
close
=
mcast_close
,
remove:
NULL
,
.
remove
=
NULL
,
set_mtu:
mcast_set_mtu
,
.
set_mtu
=
mcast_set_mtu
,
add_address:
NULL
,
.
add_address
=
NULL
,
delete_address:
NULL
,
.
delete_address
=
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
};
/*
/*
...
...
arch/um/drivers/mconsole_kern.c
View file @
9abe4b72
...
@@ -36,8 +36,8 @@ static int do_unlink_socket(struct notifier_block *notifier,
...
@@ -36,8 +36,8 @@ static int do_unlink_socket(struct notifier_block *notifier,
static
struct
notifier_block
reboot_notifier
=
{
static
struct
notifier_block
reboot_notifier
=
{
notifier_call:
do_unlink_socket
,
.
notifier_call
=
do_unlink_socket
,
priority:
0
,
.
priority
=
0
,
};
};
/* Safe without explicit locking for now. Tasklets provide their own
/* Safe without explicit locking for now. Tasklets provide their own
...
@@ -418,9 +418,9 @@ static int notify_panic(struct notifier_block *self, unsigned long unused1,
...
@@ -418,9 +418,9 @@ static int notify_panic(struct notifier_block *self, unsigned long unused1,
}
}
static struct notifier_block panic_exit_notifier = {
static struct notifier_block panic_exit_notifier = {
notifier_call :
notify_panic,
.notifier_call =
notify_panic,
next :
NULL,
.next =
NULL,
priority :
1
.priority =
1
};
};
static int add_notifier(void)
static int add_notifier(void)
...
...
arch/um/drivers/mmapper_kern.c
View file @
9abe4b72
...
@@ -106,13 +106,13 @@ mmapper_release(struct inode *inode, struct file *file)
...
@@ -106,13 +106,13 @@ mmapper_release(struct inode *inode, struct file *file)
}
}
static
struct
file_operations
mmapper_fops
=
{
static
struct
file_operations
mmapper_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
read:
mmapper_read
,
.
read
=
mmapper_read
,
write:
mmapper_write
,
.
write
=
mmapper_write
,
ioctl:
mmapper_ioctl
,
.
ioctl
=
mmapper_ioctl
,
mmap:
mmapper_mmap
,
.
mmap
=
mmapper_mmap
,
open:
mmapper_open
,
.
open
=
mmapper_open
,
release:
mmapper_release
,
.
release
=
mmapper_release
,
};
};
static
int
__init
mmapper_init
(
void
)
static
int
__init
mmapper_init
(
void
)
...
...
arch/um/drivers/net_kern.c
View file @
9abe4b72
...
@@ -368,22 +368,22 @@ static int eth_configure(int n, void *init, char *mac,
...
@@ -368,22 +368,22 @@ static int eth_configure(int n, void *init, char *mac,
*/
*/
save
=
lp
->
user
[
0
];
save
=
lp
->
user
[
0
];
*
lp
=
((
struct
uml_net_private
)
*
lp
=
((
struct
uml_net_private
)
{
list
:
LIST_HEAD_INIT
(
lp
->
list
),
{
.
list
=
LIST_HEAD_INIT
(
lp
->
list
),
lock
:
SPIN_LOCK_UNLOCKED
,
.
lock
=
SPIN_LOCK_UNLOCKED
,
dev
:
dev
,
.
dev
=
dev
,
fd
:
-
1
,
.
fd
=
-
1
,
mac
:
{
0xfe
,
0xfd
,
0x0
,
0x0
,
0x0
,
0x0
},
.
mac
=
{
0xfe
,
0xfd
,
0x0
,
0x0
,
0x0
,
0x0
},
have_mac
:
device
->
have_mac
,
.
have_mac
=
device
->
have_mac
,
protocol
:
transport
->
kern
->
protocol
,
.
protocol
=
transport
->
kern
->
protocol
,
open
:
transport
->
user
->
open
,
.
open
=
transport
->
user
->
open
,
close
:
transport
->
user
->
close
,
.
close
=
transport
->
user
->
close
,
remove
:
transport
->
user
->
remove
,
.
remove
=
transport
->
user
->
remove
,
read
:
transport
->
kern
->
read
,
.
read
=
transport
->
kern
->
read
,
write
:
transport
->
kern
->
write
,
.
write
=
transport
->
kern
->
write
,
add_address
:
transport
->
user
->
add_address
,
.
add_address
=
transport
->
user
->
add_address
,
delete_address
:
transport
->
user
->
delete_address
,
.
delete_address
=
transport
->
user
->
delete_address
,
set_mtu
:
transport
->
user
->
set_mtu
,
.
set_mtu
=
transport
->
user
->
set_mtu
,
user
:
{
save
}
});
.
user
=
{
save
}
});
init_timer
(
&
lp
->
tl
);
init_timer
(
&
lp
->
tl
);
lp
->
tl
.
function
=
uml_net_user_timer_expire
;
lp
->
tl
.
function
=
uml_net_user_timer_expire
;
memset
(
&
lp
->
stats
,
0
,
sizeof
(
lp
->
stats
));
memset
(
&
lp
->
stats
,
0
,
sizeof
(
lp
->
stats
));
...
@@ -542,9 +542,9 @@ static int eth_setup(char *str)
...
@@ -542,9 +542,9 @@ static int eth_setup(char *str)
printk
(
"eth_init : alloc_bootmem failed
\n
"
);
printk
(
"eth_init : alloc_bootmem failed
\n
"
);
return
(
1
);
return
(
1
);
}
}
*
new
=
((
struct
eth_init
)
{
list
:
LIST_HEAD_INIT
(
new
->
list
),
*
new
=
((
struct
eth_init
)
{
.
list
=
LIST_HEAD_INIT
(
new
->
list
),
index
:
n
,
.
index
=
n
,
init
:
str
});
.
init
=
str
});
list_add_tail
(
&
new
->
list
,
&
eth_cmd_line
);
list_add_tail
(
&
new
->
list
,
&
eth_cmd_line
);
return
(
1
);
return
(
1
);
}
}
...
@@ -618,9 +618,10 @@ static int net_remove(char *str)
...
@@ -618,9 +618,10 @@ static int net_remove(char *str)
}
}
static
struct
mc_device
net_mc
=
{
static
struct
mc_device
net_mc
=
{
name:
"eth"
,
.
name
=
"eth"
,
config:
net_config
,
.
config
=
net_config
,
remove:
net_remove
,
.
get_config
=
NULL
,
.
remove
=
net_remove
,
};
};
static
int
uml_inetaddr_event
(
struct
notifier_block
*
this
,
unsigned
long
event
,
static
int
uml_inetaddr_event
(
struct
notifier_block
*
this
,
unsigned
long
event
,
...
@@ -662,7 +663,7 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event,
...
@@ -662,7 +663,7 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event,
}
}
struct
notifier_block
uml_inetaddr_notifier
=
{
struct
notifier_block
uml_inetaddr_notifier
=
{
notifier_call:
uml_inetaddr_event
,
.
notifier_call
=
uml_inetaddr_event
,
};
};
static
int
uml_net_init
(
void
)
static
int
uml_net_init
(
void
)
...
...
arch/um/drivers/null.c
View file @
9abe4b72
...
@@ -32,16 +32,16 @@ void null_free(void *data)
...
@@ -32,16 +32,16 @@ void null_free(void *data)
}
}
struct
chan_ops
null_ops
=
{
struct
chan_ops
null_ops
=
{
type:
"null"
,
.
type
=
"null"
,
init:
null_init
,
.
init
=
null_init
,
open:
null_open
,
.
open
=
null_open
,
close:
generic_close
,
.
close
=
generic_close
,
read:
null_read
,
.
read
=
null_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
generic_console_write
,
.
console_write
=
generic_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
null_free
,
.
free
=
null_free
,
winch:
0
,
.
winch
=
0
,
};
};
/*
/*
...
...
arch/um/drivers/pcap_kern.c
View file @
9abe4b72
...
@@ -27,12 +27,12 @@ void pcap_init(struct net_device *dev, void *data)
...
@@ -27,12 +27,12 @@ void pcap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
pri
=
dev
->
priv
;
ppri
=
(
struct
pcap_data
*
)
pri
->
user
;
ppri
=
(
struct
pcap_data
*
)
pri
->
user
;
*
ppri
=
((
struct
pcap_data
)
*
ppri
=
((
struct
pcap_data
)
{
host_if
:
init
->
host_if
,
{
.
host_if
=
init
->
host_if
,
promisc
:
init
->
promisc
,
.
promisc
=
init
->
promisc
,
optimize
:
init
->
optimize
,
.
optimize
=
init
->
optimize
,
filter
:
init
->
filter
,
.
filter
=
init
->
filter
,
compiled
:
NULL
,
.
compiled
=
NULL
,
pcap
:
NULL
});
.
pcap
=
NULL
});
}
}
static
int
pcap_read
(
int
fd
,
struct
sk_buff
**
skb
,
static
int
pcap_read
(
int
fd
,
struct
sk_buff
**
skb
,
...
@@ -51,10 +51,10 @@ static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
...
@@ -51,10 +51,10 @@ static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
}
}
static
struct
net_kern_info
pcap_kern_info
=
{
static
struct
net_kern_info
pcap_kern_info
=
{
init:
pcap_init
,
.
init
=
pcap_init
,
protocol:
eth_protocol
,
.
protocol
=
eth_protocol
,
read:
pcap_read
,
.
read
=
pcap_read
,
write:
pcap_write
,
.
write
=
pcap_write
,
};
};
int
pcap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
int
pcap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -64,10 +64,10 @@ int pcap_setup(char *str, char **mac_out, void *data)
...
@@ -64,10 +64,10 @@ int pcap_setup(char *str, char **mac_out, void *data)
int
i
;
int
i
;
*
init
=
((
struct
pcap_init
)
*
init
=
((
struct
pcap_init
)
{
host_if
:
"eth0"
,
{
.
host_if
=
"eth0"
,
promisc
:
1
,
.
promisc
=
1
,
optimize
:
0
,
.
optimize
=
0
,
filter
:
NULL
});
.
filter
=
NULL
});
remain
=
split_if_spec
(
str
,
&
host_if
,
&
init
->
filter
,
remain
=
split_if_spec
(
str
,
&
host_if
,
&
init
->
filter
,
&
options
[
0
],
&
options
[
1
],
NULL
);
&
options
[
0
],
&
options
[
1
],
NULL
);
...
@@ -98,13 +98,13 @@ int pcap_setup(char *str, char **mac_out, void *data)
...
@@ -98,13 +98,13 @@ int pcap_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
pcap_transport
=
{
static
struct
transport
pcap_transport
=
{
list
:
LIST_HEAD_INIT
(
pcap_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
pcap_transport
.
list
),
name
:
"pcap"
,
.
name
=
"pcap"
,
setup
:
pcap_setup
,
.
setup
=
pcap_setup
,
user
:
&
pcap_user_info
,
.
user
=
&
pcap_user_info
,
kern
:
&
pcap_kern_info
,
.
kern
=
&
pcap_kern_info
,
private_size
:
sizeof
(
struct
pcap_data
),
.
private_size
=
sizeof
(
struct
pcap_data
),
setup_size
:
sizeof
(
struct
pcap_init
),
.
setup_size
=
sizeof
(
struct
pcap_init
),
};
};
static
int
register_pcap
(
void
)
static
int
register_pcap
(
void
)
...
...
arch/um/drivers/pcap_user.c
View file @
9abe4b72
...
@@ -106,8 +106,8 @@ static void handler(u_char *data, const struct pcap_pkthdr *header,
...
@@ -106,8 +106,8 @@ static void handler(u_char *data, const struct pcap_pkthdr *header,
int
pcap_user_read
(
int
fd
,
void
*
buffer
,
int
len
,
struct
pcap_data
*
pri
)
int
pcap_user_read
(
int
fd
,
void
*
buffer
,
int
len
,
struct
pcap_data
*
pri
)
{
{
struct
pcap_handler_data
hdata
=
((
struct
pcap_handler_data
)
struct
pcap_handler_data
hdata
=
((
struct
pcap_handler_data
)
{
buffer
:
buffer
,
{
.
buffer
=
buffer
,
len
:
len
});
.
len
=
len
});
int
n
;
int
n
;
n
=
pcap_dispatch
(
pri
->
pcap
,
1
,
handler
,
(
u_char
*
)
&
hdata
);
n
=
pcap_dispatch
(
pri
->
pcap
,
1
,
handler
,
(
u_char
*
)
&
hdata
);
...
@@ -121,14 +121,14 @@ int pcap_user_read(int fd, void *buffer, int len, struct pcap_data *pri)
...
@@ -121,14 +121,14 @@ int pcap_user_read(int fd, void *buffer, int len, struct pcap_data *pri)
}
}
struct
net_user_info
pcap_user_info
=
{
struct
net_user_info
pcap_user_info
=
{
init:
pcap_user_init
,
.
init
=
pcap_user_init
,
open:
pcap_open
,
.
open
=
pcap_open
,
close:
NULL
,
.
close
=
NULL
,
remove:
pcap_remove
,
.
remove
=
pcap_remove
,
set_mtu:
NULL
,
.
set_mtu
=
NULL
,
add_address:
NULL
,
.
add_address
=
NULL
,
delete_address:
NULL
,
.
delete_address
=
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
};
/*
/*
...
...
arch/um/drivers/port_kern.c
View file @
9abe4b72
...
@@ -31,7 +31,6 @@ struct port_list {
...
@@ -31,7 +31,6 @@ struct port_list {
struct
port_dev
{
struct
port_dev
{
struct
port_list
*
port
;
struct
port_list
*
port
;
int
fd
;
int
helper_pid
;
int
helper_pid
;
int
telnetd_pid
;
int
telnetd_pid
;
};
};
...
@@ -55,7 +54,8 @@ static void pipe_interrupt(int irq, void *data, struct pt_regs *regs)
...
@@ -55,7 +54,8 @@ static void pipe_interrupt(int irq, void *data, struct pt_regs *regs)
if
(
fd
==
-
EAGAIN
)
if
(
fd
==
-
EAGAIN
)
return
;
return
;
printk
(
"os_rcv_fd returned %d
\n
"
,
-
fd
);
printk
(
KERN_ERR
"pipe_interrupt : os_rcv_fd returned %d
\n
"
,
-
fd
);
os_close_file
(
conn
->
fd
);
os_close_file
(
conn
->
fd
);
}
}
...
@@ -75,37 +75,42 @@ static int port_accept(struct port_list *port)
...
@@ -75,37 +75,42 @@ static int port_accept(struct port_list *port)
fd
=
port_connection
(
port
->
fd
,
socket
,
&
pid
);
fd
=
port_connection
(
port
->
fd
,
socket
,
&
pid
);
if
(
fd
<
0
){
if
(
fd
<
0
){
if
(
fd
!=
-
EAGAIN
)
if
(
fd
!=
-
EAGAIN
)
printk
(
"port_connection returned %d
\n
"
,
-
fd
);
printk
(
KERN_ERR
"port_accept : port_connection "
"returned %d
\n
"
,
-
fd
);
goto
out
;
goto
out
;
}
}
conn
=
kmalloc
(
sizeof
(
*
conn
),
GFP_ATOMIC
);
conn
=
kmalloc
(
sizeof
(
*
conn
),
GFP_ATOMIC
);
if
(
conn
==
NULL
){
if
(
conn
==
NULL
){
printk
(
"port_interrupt : failed to allocate connection
\n
"
);
printk
(
KERN_ERR
"port_accept : failed to allocate "
"connection
\n
"
);
goto
out_close
;
goto
out_close
;
}
}
*
conn
=
((
struct
connection
)
*
conn
=
((
struct
connection
)
{
list
:
LIST_HEAD_INIT
(
conn
->
list
),
{
.
list
=
LIST_HEAD_INIT
(
conn
->
list
),
fd
:
fd
,
.
fd
=
fd
,
socket
:
{
socket
[
0
],
socket
[
1
]
},
.
socket
=
{
socket
[
0
],
socket
[
1
]
},
telnetd_pid
:
pid
,
.
telnetd_pid
=
pid
,
port
:
port
});
.
port
=
port
});
if
(
um_request_irq
(
TELNETD_IRQ
,
socket
[
0
],
IRQ_READ
,
pipe_interrupt
,
if
(
um_request_irq
(
TELNETD_IRQ
,
socket
[
0
],
IRQ_READ
,
pipe_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
"telnetd"
,
conn
)){
"telnetd"
,
conn
)){
printk
(
KERN_ERR
"Failed to get IRQ for telnetd
\n
"
);
printk
(
KERN_ERR
"port_accept : failed to get IRQ for "
"telnetd
\n
"
);
goto
out_free
;
goto
out_free
;
}
}
list_add
(
&
conn
->
list
,
&
port
->
pending
);
list_add
(
&
conn
->
list
,
&
port
->
pending
);
return
(
1
);
ret
=
1
;
goto
out
;
out_free:
out_free:
kfree
(
conn
);
kfree
(
conn
);
out_close:
out_close:
os_close_file
(
fd
);
os_close_file
(
fd
);
if
(
pid
!=
-
1
)
os_kill_process
(
pid
,
0
);
if
(
pid
!=
-
1
)
os_kill_process
(
pid
,
0
);
out:
out:
return
(
ret
);
return
(
ret
);
}
}
...
@@ -173,14 +178,15 @@ void *port_data(int port_num)
...
@@ -173,14 +178,15 @@ void *port_data(int port_num)
}
}
*
port
=
((
struct
port_list
)
*
port
=
((
struct
port_list
)
{
list
:
LIST_HEAD_INIT
(
port
->
list
),
{
.
list
=
LIST_HEAD_INIT
(
port
->
list
),
has_connection
:
0
,
.
has_connection
=
0
,
sem
:
__SEMAPHORE_INITIALIZER
(
port
->
sem
,
0
),
.
sem
=
__SEMAPHORE_INITIALIZER
(
port
->
sem
,
lock
:
SPIN_LOCK_UNLOCKED
,
0
),
port
:
port_num
,
.
lock
=
SPIN_LOCK_UNLOCKED
,
fd
:
fd
,
.
port
=
port_num
,
pending
:
LIST_HEAD_INIT
(
port
->
pending
),
.
fd
=
fd
,
connections
:
LIST_HEAD_INIT
(
port
->
connections
)
});
.
pending
=
LIST_HEAD_INIT
(
port
->
pending
),
.
connections
=
LIST_HEAD_INIT
(
port
->
connections
)
});
list_add
(
&
port
->
list
,
&
ports
);
list_add
(
&
port
->
list
,
&
ports
);
found:
found:
...
@@ -190,9 +196,9 @@ void *port_data(int port_num)
...
@@ -190,9 +196,9 @@ void *port_data(int port_num)
goto
out
;
goto
out
;
}
}
*
dev
=
((
struct
port_dev
)
{
port
:
port
,
*
dev
=
((
struct
port_dev
)
{
.
port
=
port
,
fd
:
-
1
,
.
helper_pid
=
-
1
,
helper_pid
:
-
1
});
.
telnetd_pid
=
-
1
});
goto
out
;
goto
out
;
out_free:
out_free:
...
@@ -204,38 +210,16 @@ void *port_data(int port_num)
...
@@ -204,38 +210,16 @@ void *port_data(int port_num)
return
(
dev
);
return
(
dev
);
}
}
void
port_remove_dev
(
void
*
d
)
{
struct
port_dev
*
dev
=
d
;
if
(
dev
->
helper_pid
!=
-
1
)
os_kill_process
(
dev
->
helper_pid
,
0
);
if
(
dev
->
telnetd_pid
!=
-
1
)
os_kill_process
(
dev
->
telnetd_pid
,
0
);
dev
->
helper_pid
=
-
1
;
}
static
void
free_port
(
void
)
{
struct
list_head
*
ele
;
struct
port_list
*
port
;
list_for_each
(
ele
,
&
ports
){
port
=
list_entry
(
ele
,
struct
port_list
,
list
);
os_close_file
(
port
->
fd
);
}
}
__uml_exitcall
(
free_port
);
int
port_wait
(
void
*
data
)
int
port_wait
(
void
*
data
)
{
{
struct
port_dev
*
dev
=
data
;
struct
port_dev
*
dev
=
data
;
struct
connection
*
conn
;
struct
connection
*
conn
;
struct
port_list
*
port
=
dev
->
port
;
struct
port_list
*
port
=
dev
->
port
;
int
fd
;
while
(
1
){
while
(
1
){
if
(
down_interruptible
(
&
port
->
sem
))
return
(
-
ERESTARTSYS
);
if
(
down_interruptible
(
&
port
->
sem
))
return
(
-
ERESTARTSYS
);
spin_lock
(
&
port
->
lock
);
spin_lock
(
&
port
->
lock
);
...
@@ -262,23 +246,48 @@ int port_wait(void *data)
...
@@ -262,23 +246,48 @@ int port_wait(void *data)
kfree
(
conn
);
kfree
(
conn
);
}
}
dev
->
fd
=
conn
->
fd
;
fd
=
conn
->
fd
;
dev
->
helper_pid
=
conn
->
helper_pid
;
dev
->
helper_pid
=
conn
->
helper_pid
;
dev
->
telnetd_pid
=
conn
->
telnetd_pid
;
dev
->
telnetd_pid
=
conn
->
telnetd_pid
;
kfree
(
conn
);
kfree
(
conn
);
return
(
dev
->
fd
);
return
(
fd
);
}
void
port_remove_dev
(
void
*
d
)
{
struct
port_dev
*
dev
=
d
;
if
(
dev
->
helper_pid
!=
-
1
)
os_kill_process
(
dev
->
helper_pid
,
0
);
if
(
dev
->
telnetd_pid
!=
-
1
)
os_kill_process
(
dev
->
telnetd_pid
,
0
);
dev
->
helper_pid
=
-
1
;
dev
->
telnetd_pid
=
-
1
;
}
}
void
port_kern_free
(
void
*
d
)
void
port_kern_free
(
void
*
d
)
{
{
struct
port_dev
*
dev
=
d
;
struct
port_dev
*
dev
=
d
;
if
(
dev
->
helper_pid
!=
-
1
)
os_kill_process
(
dev
->
helper_pid
,
0
);
port_remove_dev
(
dev
);
if
(
dev
->
telnetd_pid
!=
-
1
)
os_kill_process
(
dev
->
telnetd_pid
,
0
);
kfree
(
dev
);
kfree
(
dev
);
}
}
static
void
free_port
(
void
)
{
struct
list_head
*
ele
;
struct
port_list
*
port
;
list_for_each
(
ele
,
&
ports
){
port
=
list_entry
(
ele
,
struct
port_list
,
list
);
free_irq_by_fd
(
port
->
fd
);
os_close_file
(
port
->
fd
);
}
}
__uml_exitcall
(
free_port
);
/*
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
* Emacs will notice this stuff at the end of the file and automatically
...
...
arch/um/drivers/port_user.c
View file @
9abe4b72
...
@@ -47,14 +47,28 @@ void *port_init(char *str, int device, struct chan_opts *opts)
...
@@ -47,14 +47,28 @@ void *port_init(char *str, int device, struct chan_opts *opts)
return
(
NULL
);
return
(
NULL
);
}
}
if
((
kern_data
=
port_data
(
port
))
==
NULL
)
return
(
NULL
);
if
((
kern_data
=
port_data
(
port
))
==
NULL
)
return
(
NULL
);
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
goto
err
;
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
port_chan
)
{
.
raw
=
opts
->
raw
,
*
data
=
((
struct
port_chan
)
{
raw
:
opts
->
raw
,
.
kernel_data
=
kern_data
});
kernel_data
:
kern_data
});
sprintf
(
data
->
dev
,
"%d"
,
port
);
sprintf
(
data
->
dev
,
"%d"
,
port
);
return
(
data
);
return
(
data
);
err:
port_kern_free
(
kern_data
);
return
(
NULL
);
}
void
port_free
(
void
*
d
)
{
struct
port_chan
*
data
=
d
;
port_kern_free
(
data
->
kernel_data
);
kfree
(
data
);
}
}
int
port_open
(
int
input
,
int
output
,
int
primary
,
void
*
d
,
char
**
dev_out
)
int
port_open
(
int
input
,
int
output
,
int
primary
,
void
*
d
,
char
**
dev_out
)
...
@@ -86,25 +100,17 @@ int port_console_write(int fd, const char *buf, int n, void *d)
...
@@ -86,25 +100,17 @@ int port_console_write(int fd, const char *buf, int n, void *d)
return
(
generic_console_write
(
fd
,
buf
,
n
,
&
data
->
tt
));
return
(
generic_console_write
(
fd
,
buf
,
n
,
&
data
->
tt
));
}
}
void
port_free
(
void
*
d
)
{
struct
port_chan
*
data
=
d
;
port_kern_free
(
data
->
kernel_data
);
kfree
(
data
);
}
struct
chan_ops
port_ops
=
{
struct
chan_ops
port_ops
=
{
type:
"port"
,
.
type
=
"port"
,
init:
port_init
,
.
init
=
port_init
,
open:
port_open
,
.
open
=
port_open
,
close:
port_close
,
.
close
=
port_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
port_console_write
,
.
console_write
=
port_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
port_free
,
.
free
=
port_free
,
winch:
1
,
.
winch
=
1
,
};
};
int
port_listen_fd
(
int
port
)
int
port_listen_fd
(
int
port
)
...
@@ -113,7 +119,8 @@ int port_listen_fd(int port)
...
@@ -113,7 +119,8 @@ int port_listen_fd(int port)
int
fd
,
err
;
int
fd
,
err
;
fd
=
socket
(
PF_INET
,
SOCK_STREAM
,
0
);
fd
=
socket
(
PF_INET
,
SOCK_STREAM
,
0
);
if
(
fd
==
-
1
)
return
(
-
errno
);
if
(
fd
==
-
1
)
return
(
-
errno
);
addr
.
sin_family
=
AF_INET
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_port
=
htons
(
port
);
addr
.
sin_port
=
htons
(
port
);
...
@@ -163,14 +170,16 @@ int port_connection(int fd, int *socket, int *pid_out)
...
@@ -163,14 +170,16 @@ int port_connection(int fd, int *socket, int *pid_out)
return
(
-
errno
);
return
(
-
errno
);
err
=
os_pipe
(
socket
,
0
,
0
);
err
=
os_pipe
(
socket
,
0
,
0
);
if
(
err
)
goto
out_close
;
if
(
err
)
goto
out_close
;
data
=
((
struct
port_pre_exec_data
)
data
=
((
struct
port_pre_exec_data
)
{
sock_fd
:
new
,
{
.
sock_fd
=
new
,
pipe_fd
:
socket
[
1
]
});
.
pipe_fd
=
socket
[
1
]
});
err
=
run_helper
(
port_pre_exec
,
&
data
,
argv
,
NULL
);
err
=
run_helper
(
port_pre_exec
,
&
data
,
argv
,
NULL
);
if
(
err
<
0
)
goto
out_shutdown
;
if
(
err
<
0
)
goto
out_shutdown
;
*
pid_out
=
err
;
*
pid_out
=
err
;
return
(
new
);
return
(
new
);
...
...
arch/um/drivers/pty.c
View file @
9abe4b72
/*
/*
* Copyright (C) 2001 Jeff Dike (jdike@karaya.com)
* Copyright (C) 2001
, 2002
Jeff Dike (jdike@karaya.com)
* Licensed under the GPL
* Licensed under the GPL
*/
*/
...
@@ -27,9 +27,9 @@ void *pty_chan_init(char *str, int device, struct chan_opts *opts)
...
@@ -27,9 +27,9 @@ void *pty_chan_init(char *str, int device, struct chan_opts *opts)
struct
pty_chan
*
data
;
struct
pty_chan
*
data
;
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
pty_chan
)
{
announce
:
opts
->
announce
,
*
data
=
((
struct
pty_chan
)
{
.
announce
=
opts
->
announce
,
dev
:
device
,
.
dev
=
device
,
raw
:
opts
->
raw
});
.
raw
=
opts
->
raw
});
return
(
data
);
return
(
data
);
}
}
...
@@ -86,34 +86,15 @@ int getmaster(char *line)
...
@@ -86,34 +86,15 @@ int getmaster(char *line)
return
(
-
1
);
return
(
-
1
);
}
}
struct
grantpt_info
{
int
fd
;
int
res
;
int
err
;
};
static
void
grantpt_cb
(
void
*
arg
)
{
struct
grantpt_info
*
info
=
arg
;
info
->
res
=
grantpt
(
info
->
fd
);
info
->
err
=
errno
;
}
int
pty_open
(
int
input
,
int
output
,
int
primary
,
void
*
d
,
char
**
dev_out
)
int
pty_open
(
int
input
,
int
output
,
int
primary
,
void
*
d
,
char
**
dev_out
)
{
{
struct
pty_chan
*
data
=
d
;
struct
pty_chan
*
data
=
d
;
int
fd
;
int
fd
;
char
dev
[
sizeof
(
"/dev/ptyxx
\0
"
)]
=
"/dev/ptyxx"
;
char
dev
[
sizeof
(
"/dev/ptyxx
\0
"
)]
=
"/dev/ptyxx"
;
struct
grantpt_info
info
;
fd
=
getmaster
(
dev
);
fd
=
getmaster
(
dev
);
if
(
fd
<
0
)
return
(
-
errno
);
if
(
fd
<
0
)
return
(
-
errno
);
info
.
fd
=
fd
;
initial_thread_cb
(
grantpt_cb
,
&
info
);
unlockpt
(
fd
);
if
(
data
->
raw
)
raw
(
fd
,
0
);
if
(
data
->
raw
)
raw
(
fd
,
0
);
if
(
data
->
announce
)
(
*
data
->
announce
)(
dev
,
data
->
dev
);
if
(
data
->
announce
)
(
*
data
->
announce
)(
dev
,
data
->
dev
);
...
@@ -130,29 +111,29 @@ int pty_console_write(int fd, const char *buf, int n, void *d)
...
@@ -130,29 +111,29 @@ int pty_console_write(int fd, const char *buf, int n, void *d)
}
}
struct
chan_ops
pty_ops
=
{
struct
chan_ops
pty_ops
=
{
type:
"pty"
,
.
type
=
"pty"
,
init:
pty_chan_init
,
.
init
=
pty_chan_init
,
open:
pty_open
,
.
open
=
pty_open
,
close:
generic_close
,
.
close
=
generic_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
pty_console_write
,
.
console_write
=
pty_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
generic_free
,
.
free
=
generic_free
,
winch:
0
,
.
winch
=
0
,
};
};
struct
chan_ops
pts_ops
=
{
struct
chan_ops
pts_ops
=
{
type:
"pts"
,
.
type
=
"pts"
,
init:
pty_chan_init
,
.
init
=
pty_chan_init
,
open:
pts_open
,
.
open
=
pts_open
,
close:
generic_close
,
.
close
=
generic_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
pty_console_write
,
.
console_write
=
pty_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
generic_free
,
.
free
=
generic_free
,
winch:
0
,
.
winch
=
0
,
};
};
/*
/*
...
...
arch/um/drivers/slip_kern.c
View file @
9abe4b72
...
@@ -22,15 +22,15 @@ void slip_init(struct net_device *dev, void *data)
...
@@ -22,15 +22,15 @@ void slip_init(struct net_device *dev, void *data)
private
=
dev
->
priv
;
private
=
dev
->
priv
;
spri
=
(
struct
slip_data
*
)
private
->
user
;
spri
=
(
struct
slip_data
*
)
private
->
user
;
*
spri
=
((
struct
slip_data
)
*
spri
=
((
struct
slip_data
)
{
name
:
{
'\0'
},
{
.
name
=
{
'\0'
},
addr:
NULL
,
.
addr
=
NULL
,
gate_addr
:
init
->
gate_addr
,
.
gate_addr
=
init
->
gate_addr
,
slave
:
-
1
,
.
slave
=
-
1
,
ibuf
:
{
'\0'
},
.
ibuf
=
{
'\0'
},
obuf
:
{
'\0'
},
.
obuf
=
{
'\0'
},
pos
:
0
,
.
pos
=
0
,
esc
:
0
,
.
esc
=
0
,
dev
:
dev
});
.
dev
=
dev
});
dev
->
init
=
NULL
;
dev
->
init
=
NULL
;
dev
->
hard_header_len
=
0
;
dev
->
hard_header_len
=
0
;
...
@@ -61,10 +61,10 @@ static int slip_write(int fd, struct sk_buff **skb,
...
@@ -61,10 +61,10 @@ static int slip_write(int fd, struct sk_buff **skb,
}
}
struct
net_kern_info
slip_kern_info
=
{
struct
net_kern_info
slip_kern_info
=
{
init:
slip_init
,
.
init
=
slip_init
,
protocol:
slip_protocol
,
.
protocol
=
slip_protocol
,
read:
slip_read
,
.
read
=
slip_read
,
write:
slip_write
,
.
write
=
slip_write
,
};
};
static
int
slip_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
static
int
slip_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -72,7 +72,7 @@ static int slip_setup(char *str, char **mac_out, void *data)
...
@@ -72,7 +72,7 @@ static int slip_setup(char *str, char **mac_out, void *data)
struct
slip_init
*
init
=
data
;
struct
slip_init
*
init
=
data
;
*
init
=
((
struct
slip_init
)
*
init
=
((
struct
slip_init
)
{
gate_addr
:
NULL
});
{
.
gate_addr
=
NULL
});
if
(
str
[
0
]
!=
'\0'
)
if
(
str
[
0
]
!=
'\0'
)
init
->
gate_addr
=
str
;
init
->
gate_addr
=
str
;
...
@@ -80,13 +80,13 @@ static int slip_setup(char *str, char **mac_out, void *data)
...
@@ -80,13 +80,13 @@ static int slip_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
slip_transport
=
{
static
struct
transport
slip_transport
=
{
list
:
LIST_HEAD_INIT
(
slip_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
slip_transport
.
list
),
name
:
"slip"
,
.
name
=
"slip"
,
setup
:
slip_setup
,
.
setup
=
slip_setup
,
user
:
&
slip_user_info
,
.
user
=
&
slip_user_info
,
kern
:
&
slip_kern_info
,
.
kern
=
&
slip_kern_info
,
private_size
:
sizeof
(
struct
slip_data
),
.
private_size
=
sizeof
(
struct
slip_data
),
setup_size
:
sizeof
(
struct
slip_init
),
.
setup_size
=
sizeof
(
struct
slip_init
),
};
};
static
int
register_slip
(
void
)
static
int
register_slip
(
void
)
...
...
arch/um/drivers/slip_user.c
View file @
9abe4b72
...
@@ -257,14 +257,14 @@ static void slip_del_addr(unsigned char *addr, unsigned char *netmask,
...
@@ -257,14 +257,14 @@ static void slip_del_addr(unsigned char *addr, unsigned char *netmask,
}
}
struct
net_user_info
slip_user_info
=
{
struct
net_user_info
slip_user_info
=
{
init:
slip_user_init
,
.
init
=
slip_user_init
,
open:
slip_open
,
.
open
=
slip_open
,
close:
slip_close
,
.
close
=
slip_close
,
remove:
NULL
,
.
remove
=
NULL
,
set_mtu:
slip_set_mtu
,
.
set_mtu
=
slip_set_mtu
,
add_address:
slip_add_addr
,
.
add_address
=
slip_add_addr
,
delete_address:
slip_del_addr
,
.
delete_address
=
slip_del_addr
,
max_packet:
BUF_SIZE
.
max_packet
=
BUF_SIZE
};
};
/*
/*
...
...
arch/um/drivers/slirp_kern.c
View file @
9abe4b72
...
@@ -22,14 +22,14 @@ void slirp_init(struct net_device *dev, void *data)
...
@@ -22,14 +22,14 @@ void slirp_init(struct net_device *dev, void *data)
private
=
dev
->
priv
;
private
=
dev
->
priv
;
spri
=
(
struct
slirp_data
*
)
private
->
user
;
spri
=
(
struct
slirp_data
*
)
private
->
user
;
*
spri
=
((
struct
slirp_data
)
*
spri
=
((
struct
slirp_data
)
{
argw
:
init
->
argw
,
{
.
argw
=
init
->
argw
,
pid
:
-
1
,
.
pid
=
-
1
,
slave
:
-
1
,
.
slave
=
-
1
,
ibuf
:
{
'\0'
},
.
ibuf
=
{
'\0'
},
obuf
:
{
'\0'
},
.
obuf
=
{
'\0'
},
pos
:
0
,
.
pos
=
0
,
esc
:
0
,
.
esc
=
0
,
dev
:
dev
});
.
dev
=
dev
});
dev
->
init
=
NULL
;
dev
->
init
=
NULL
;
dev
->
hard_header_len
=
0
;
dev
->
hard_header_len
=
0
;
...
@@ -64,10 +64,10 @@ static int slirp_write(int fd, struct sk_buff **skb,
...
@@ -64,10 +64,10 @@ static int slirp_write(int fd, struct sk_buff **skb,
}
}
struct
net_kern_info
slirp_kern_info
=
{
struct
net_kern_info
slirp_kern_info
=
{
init:
slirp_init
,
.
init
=
slirp_init
,
protocol:
slirp_protocol
,
.
protocol
=
slirp_protocol
,
read:
slirp_read
,
.
read
=
slirp_read
,
write:
slirp_write
,
.
write
=
slirp_write
,
};
};
static
int
slirp_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
static
int
slirp_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -103,13 +103,13 @@ static int slirp_setup(char *str, char **mac_out, void *data)
...
@@ -103,13 +103,13 @@ static int slirp_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
slirp_transport
=
{
static
struct
transport
slirp_transport
=
{
list
:
LIST_HEAD_INIT
(
slirp_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
slirp_transport
.
list
),
name
:
"slirp"
,
.
name
=
"slirp"
,
setup
:
slirp_setup
,
.
setup
=
slirp_setup
,
user
:
&
slirp_user_info
,
.
user
=
&
slirp_user_info
,
kern
:
&
slirp_kern_info
,
.
kern
=
&
slirp_kern_info
,
private_size
:
sizeof
(
struct
slirp_data
),
.
private_size
=
sizeof
(
struct
slirp_data
),
setup_size
:
sizeof
(
struct
slirp_init
),
.
setup_size
=
sizeof
(
struct
slirp_init
),
};
};
static
int
register_slirp
(
void
)
static
int
register_slirp
(
void
)
...
...
arch/um/drivers/slirp_user.c
View file @
9abe4b72
...
@@ -180,14 +180,14 @@ static int slirp_set_mtu(int mtu, void *data)
...
@@ -180,14 +180,14 @@ static int slirp_set_mtu(int mtu, void *data)
}
}
struct
net_user_info
slirp_user_info
=
{
struct
net_user_info
slirp_user_info
=
{
init:
slirp_user_init
,
.
init
=
slirp_user_init
,
open:
slirp_open
,
.
open
=
slirp_open
,
close:
slirp_close
,
.
close
=
slirp_close
,
remove:
NULL
,
.
remove
=
NULL
,
set_mtu:
slirp_set_mtu
,
.
set_mtu
=
slirp_set_mtu
,
add_address:
NULL
,
.
add_address
=
NULL
,
delete_address:
NULL
,
.
delete_address
=
NULL
,
max_packet:
BUF_SIZE
.
max_packet
=
BUF_SIZE
};
};
/*
/*
...
...
arch/um/drivers/ssl.c
View file @
9abe4b72
...
@@ -41,11 +41,11 @@ void ssl_announce(char *dev_name, int dev)
...
@@ -41,11 +41,11 @@ void ssl_announce(char *dev_name, int dev)
}
}
static
struct
chan_opts
opts
=
{
static
struct
chan_opts
opts
=
{
announce:
ssl_announce
,
.
announce
=
ssl_announce
,
xterm_title:
"Serial Line #%d"
,
.
xterm_title
=
"Serial Line #%d"
,
raw:
1
,
.
raw
=
1
,
tramp_stack
:
0
,
.
tramp_stack
=
0
,
in_kernel
:
1
,
.
in_kernel
=
1
,
};
};
static
int
ssl_config
(
char
*
str
);
static
int
ssl_config
(
char
*
str
);
...
@@ -53,23 +53,23 @@ static int ssl_get_config(char *dev, char *str, int size, char **error_out);
...
@@ -53,23 +53,23 @@ static int ssl_get_config(char *dev, char *str, int size, char **error_out);
static
int
ssl_remove
(
char
*
str
);
static
int
ssl_remove
(
char
*
str
);
static
struct
line_driver
driver
=
{
static
struct
line_driver
driver
=
{
name
:
"UML serial line"
,
.
name
=
"UML serial line"
,
devfs_name
:
"tts/%d"
,
.
devfs_name
=
"tts/%d"
,
major
:
TTYAUX_MAJOR
,
.
major
=
TTYAUX_MAJOR
,
minor_start
:
64
,
.
minor_start
=
64
,
type
:
TTY_DRIVER_TYPE_SERIAL
,
.
type
=
TTY_DRIVER_TYPE_SERIAL
,
subtype
:
0
,
.
subtype
=
0
,
read_irq
:
SSL_IRQ
,
.
read_irq
=
SSL_IRQ
,
read_irq_name
:
"ssl"
,
.
read_irq_name
=
"ssl"
,
write_irq
:
SSL_WRITE_IRQ
,
.
write_irq
=
SSL_WRITE_IRQ
,
write_irq_name
:
"ssl-write"
,
.
write_irq_name
=
"ssl-write"
,
symlink_from
:
"serial"
,
.
symlink_from
=
"serial"
,
symlink_to
:
"tts"
,
.
symlink_to
=
"tts"
,
mc
:
{
.
mc
=
{
name
:
"ssl"
,
.
name
=
"ssl"
,
config
:
ssl_config
,
.
config
=
ssl_config
,
get_config
:
ssl_get_config
,
.
get_config
=
ssl_get_config
,
remove
:
ssl_remove
,
.
remove
=
ssl_remove
,
},
},
};
};
...
@@ -191,21 +191,21 @@ void ssl_hangup(struct tty_struct *tty)
...
@@ -191,21 +191,21 @@ void ssl_hangup(struct tty_struct *tty)
}
}
static
struct
tty_driver
ssl_driver
=
{
static
struct
tty_driver
ssl_driver
=
{
refcount
:
&
ssl_refcount
,
.
refcount
=
&
ssl_refcount
,
open
:
ssl_open
,
.
open
=
ssl_open
,
close
:
ssl_close
,
.
close
=
ssl_close
,
write
:
ssl_write
,
.
write
=
ssl_write
,
put_char
:
ssl_put_char
,
.
put_char
=
ssl_put_char
,
flush_chars
:
ssl_flush_chars
,
.
flush_chars
=
ssl_flush_chars
,
chars_in_buffer
:
ssl_chars_in_buffer
,
.
chars_in_buffer
=
ssl_chars_in_buffer
,
flush_buffer
:
ssl_flush_buffer
,
.
flush_buffer
=
ssl_flush_buffer
,
ioctl
:
ssl_ioctl
,
.
ioctl
=
ssl_ioctl
,
throttle
:
ssl_throttle
,
.
throttle
=
ssl_throttle
,
unthrottle
:
ssl_unthrottle
,
.
unthrottle
=
ssl_unthrottle
,
set_termios
:
ssl_set_termios
,
.
set_termios
=
ssl_set_termios
,
stop
:
ssl_stop
,
.
stop
=
ssl_stop
,
start
:
ssl_start
,
.
start
=
ssl_start
,
hangup
:
ssl_hangup
.
hangup
=
ssl_hangup
};
};
/* Changed by ssl_init and referenced by ssl_exit, which are both serialized
/* Changed by ssl_init and referenced by ssl_exit, which are both serialized
...
...
arch/um/drivers/stdio_console.c
View file @
9abe4b72
...
@@ -42,28 +42,28 @@ static struct tty_driver console_driver;
...
@@ -42,28 +42,28 @@ static struct tty_driver console_driver;
static
int
console_refcount
=
0
;
static
int
console_refcount
=
0
;
static
struct
chan_ops
init_console_ops
=
{
static
struct
chan_ops
init_console_ops
=
{
type:
"you shouldn't see this"
,
.
type
=
"you shouldn't see this"
,
init
:
NULL
,
.
init
=
NULL
,
open
:
NULL
,
.
open
=
NULL
,
close
:
NULL
,
.
close
=
NULL
,
read
:
NULL
,
.
read
=
NULL
,
write
:
NULL
,
.
write
=
NULL
,
console_write
:
generic_write
,
.
console_write
=
generic_write
,
window_size
:
NULL
,
.
window_size
=
NULL
,
free
:
NULL
,
.
free
=
NULL
,
winch:
0
,
.
winch
=
0
,
};
};
static
struct
chan
init_console_chan
=
{
static
struct
chan
init_console_chan
=
{
list
:
{
},
.
list
=
{
},
primary
:
1
,
.
primary
=
1
,
input
:
0
,
.
input
=
0
,
output
:
1
,
.
output
=
1
,
opened
:
1
,
.
opened
=
1
,
fd
:
1
,
.
fd
=
1
,
pri
:
INIT_STATIC
,
.
pri
=
INIT_STATIC
,
ops
:
&
init_console_ops
,
.
ops
=
&
init_console_ops
,
data
:
NULL
.
data
=
NULL
};
};
void
stdio_announce
(
char
*
dev_name
,
int
dev
)
void
stdio_announce
(
char
*
dev_name
,
int
dev
)
...
@@ -73,11 +73,11 @@ void stdio_announce(char *dev_name, int dev)
...
@@ -73,11 +73,11 @@ void stdio_announce(char *dev_name, int dev)
}
}
static
struct
chan_opts
opts
=
{
static
struct
chan_opts
opts
=
{
announce:
stdio_announce
,
.
announce
=
stdio_announce
,
xterm_title:
"Virtual Console #%d"
,
.
xterm_title
=
"Virtual Console #%d"
,
raw:
1
,
.
raw
=
1
,
tramp_stack
:
0
,
.
tramp_stack
=
0
,
in_kernel
:
1
,
.
in_kernel
=
1
,
};
};
static
int
con_config
(
char
*
str
);
static
int
con_config
(
char
*
str
);
...
@@ -85,23 +85,23 @@ static int con_get_config(char *dev, char *str, int size, char **error_out);
...
@@ -85,23 +85,23 @@ static int con_get_config(char *dev, char *str, int size, char **error_out);
static
int
con_remove
(
char
*
str
);
static
int
con_remove
(
char
*
str
);
static
struct
line_driver
driver
=
{
static
struct
line_driver
driver
=
{
name
:
"UML console"
,
.
name
=
"UML console"
,
devfs_name
:
"vc/%d"
,
.
devfs_name
=
"vc/%d"
,
major
:
TTY_MAJOR
,
.
major
=
TTY_MAJOR
,
minor_start
:
0
,
.
minor_start
=
0
,
type
:
TTY_DRIVER_TYPE_CONSOLE
,
.
type
=
TTY_DRIVER_TYPE_CONSOLE
,
subtype
:
SYSTEM_TYPE_CONSOLE
,
.
subtype
=
SYSTEM_TYPE_CONSOLE
,
read_irq
:
CONSOLE_IRQ
,
.
read_irq
=
CONSOLE_IRQ
,
read_irq_name
:
"console"
,
.
read_irq_name
=
"console"
,
write_irq
:
CONSOLE_WRITE_IRQ
,
.
write_irq
=
CONSOLE_WRITE_IRQ
,
write_irq_name
:
"console-write"
,
.
write_irq_name
=
"console-write"
,
symlink_from
:
"ttys"
,
.
symlink_from
=
"ttys"
,
symlink_to
:
"vc"
,
.
symlink_to
=
"vc"
,
mc
:
{
.
mc
=
{
name
:
"con"
,
.
name
=
"con"
,
config
:
con_config
,
.
config
=
con_config
,
get_config
:
con_get_config
,
.
get_config
=
con_get_config
,
remove
:
con_remove
,
.
remove
=
con_remove
,
},
},
};
};
...
@@ -192,12 +192,12 @@ static void console_write(struct console *console, const char *string,
...
@@ -192,12 +192,12 @@ static void console_write(struct console *console, const char *string,
}
}
static
struct
tty_driver
console_driver
=
{
static
struct
tty_driver
console_driver
=
{
refcount
:
&
console_refcount
,
.
refcount
=
&
console_refcount
,
open
:
con_open
,
.
open
=
con_open
,
close
:
con_close
,
.
close
=
con_close
,
write
:
con_write
,
.
write
=
con_write
,
chars_in_buffer
:
chars_in_buffer
,
.
chars_in_buffer
=
chars_in_buffer
,
set_termios
:
set_termios
.
set_termios
=
set_termios
};
};
static
kdev_t
console_device
(
struct
console
*
c
)
static
kdev_t
console_device
(
struct
console
*
c
)
...
...
arch/um/drivers/tty.c
View file @
9abe4b72
...
@@ -32,8 +32,8 @@ void *tty_chan_init(char *str, int device, struct chan_opts *opts)
...
@@ -32,8 +32,8 @@ void *tty_chan_init(char *str, int device, struct chan_opts *opts)
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
return
(
NULL
);
*
data
=
((
struct
tty_chan
)
{
dev
:
str
,
*
data
=
((
struct
tty_chan
)
{
.
dev
=
str
,
raw
:
opts
->
raw
});
.
raw
=
opts
->
raw
});
return
(
data
);
return
(
data
);
}
}
...
@@ -62,16 +62,16 @@ int tty_console_write(int fd, const char *buf, int n, void *d)
...
@@ -62,16 +62,16 @@ int tty_console_write(int fd, const char *buf, int n, void *d)
}
}
struct
chan_ops
tty_ops
=
{
struct
chan_ops
tty_ops
=
{
type:
"tty"
,
.
type
=
"tty"
,
init:
tty_chan_init
,
.
init
=
tty_chan_init
,
open:
tty_open
,
.
open
=
tty_open
,
close:
generic_close
,
.
close
=
generic_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
tty_console_write
,
.
console_write
=
tty_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
generic_free
,
.
free
=
generic_free
,
winch:
0
,
.
winch
=
0
,
};
};
/*
/*
...
...
arch/um/drivers/ubd_kern.c
View file @
9abe4b72
arch/um/drivers/xterm.c
View file @
9abe4b72
...
@@ -37,13 +37,13 @@ void *xterm_init(char *str, int device, struct chan_opts *opts)
...
@@ -37,13 +37,13 @@ void *xterm_init(char *str, int device, struct chan_opts *opts)
struct
xterm_chan
*
data
;
struct
xterm_chan
*
data
;
if
((
data
=
malloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
if
((
data
=
malloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
xterm_chan
)
{
pid
:
-
1
,
*
data
=
((
struct
xterm_chan
)
{
.
pid
=
-
1
,
helper_pid
:
-
1
,
.
helper_pid
=
-
1
,
device
:
device
,
.
device
=
device
,
title
:
opts
->
xterm_title
,
.
title
=
opts
->
xterm_title
,
raw
:
opts
->
raw
,
.
raw
=
opts
->
raw
,
stack
:
opts
->
tramp_stack
,
.
stack
=
opts
->
tramp_stack
,
direct_rcv
:
!
opts
->
in_kernel
}
);
.
direct_rcv
=
!
opts
->
in_kernel
}
);
return
(
data
);
return
(
data
);
}
}
...
@@ -172,16 +172,16 @@ int xterm_console_write(int fd, const char *buf, int n, void *d)
...
@@ -172,16 +172,16 @@ int xterm_console_write(int fd, const char *buf, int n, void *d)
}
}
struct
chan_ops
xterm_ops
=
{
struct
chan_ops
xterm_ops
=
{
type:
"xterm"
,
.
type
=
"xterm"
,
init:
xterm_init
,
.
init
=
xterm_init
,
open:
xterm_open
,
.
open
=
xterm_open
,
close:
xterm_close
,
.
close
=
xterm_close
,
read:
generic_read
,
.
read
=
generic_read
,
write:
generic_write
,
.
write
=
generic_write
,
console_write:
xterm_console_write
,
.
console_write
=
xterm_console_write
,
window_size:
generic_window_size
,
.
window_size
=
generic_window_size
,
free:
xterm_free
,
.
free
=
xterm_free
,
winch:
1
,
.
winch
=
1
,
};
};
/*
/*
...
...
arch/um/drivers/xterm_kern.c
View file @
9abe4b72
...
@@ -39,21 +39,21 @@ int xterm_fd(int socket, int *pid_out)
...
@@ -39,21 +39,21 @@ int xterm_fd(int socket, int *pid_out)
data
=
kmalloc
(
sizeof
(
*
data
),
GFP_KERNEL
);
data
=
kmalloc
(
sizeof
(
*
data
),
GFP_KERNEL
);
if
(
data
==
NULL
){
if
(
data
==
NULL
){
printk
(
KERN_ERR
"xterm_fd
- failed to allocate semaphore
\n
"
);
printk
(
KERN_ERR
"xterm_fd
: failed to allocate xterm_wait
\n
"
);
return
(
-
ENOMEM
);
return
(
-
ENOMEM
);
}
}
*
data
=
((
struct
xterm_wait
)
*
data
=
((
struct
xterm_wait
)
{
sem
:
__SEMAPHORE_INITIALIZER
(
data
->
sem
,
0
),
{
.
sem
=
__SEMAPHORE_INITIALIZER
(
data
->
sem
,
0
),
fd
:
socket
,
.
fd
=
socket
,
pid
:
-
1
,
.
pid
=
-
1
,
new_fd
:
-
1
});
.
new_fd
=
-
1
});
err
=
um_request_irq
(
XTERM_IRQ
,
socket
,
IRQ_READ
,
xterm_interrupt
,
err
=
um_request_irq
(
XTERM_IRQ
,
socket
,
IRQ_READ
,
xterm_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
"xterm"
,
data
);
"xterm"
,
data
);
if
(
err
){
if
(
err
){
printk
(
KERN_ERR
"
Failed to get IRQ for xterm, err = %d
\n
"
,
printk
(
KERN_ERR
"
xterm_fd : failed to get IRQ for xterm, "
err
);
"err = %d
\n
"
,
err
);
return
(
err
);
return
(
err
);
}
}
down
(
&
data
->
sem
);
down
(
&
data
->
sem
);
...
...
arch/um/include/signal_kern.h
View file @
9abe4b72
/*
/*
* Copyright (C) 2001 Jeff Dike (jdike@karaya.com)
* Copyright (C) 2001
, 2002
Jeff Dike (jdike@karaya.com)
* Licensed under the GPL
* Licensed under the GPL
*/
*/
#ifndef __SIGNAL_KERN_H__
#ifndef __SIGNAL_KERN_H__
#define __SIGNAL_KERN_H__
#define __SIGNAL_KERN_H__
#include "sysdep/ptrace.h"
extern
void
signal_deliverer
(
int
sig
);
extern
int
probe_stack
(
unsigned
long
sp
,
int
delta
);
extern
int
have_signals
(
void
*
t
);
extern
int
have_signals
(
void
*
t
);
#endif
#endif
...
...
arch/um/include/umid.h
View file @
9abe4b72
...
@@ -3,8 +3,13 @@
...
@@ -3,8 +3,13 @@
* Licensed under the GPL
* Licensed under the GPL
*/
*/
#ifndef __UMID_H__
#define __UMID_H__
extern
int
umid_file_name
(
char
*
name
,
char
*
buf
,
int
len
);
extern
int
umid_file_name
(
char
*
name
,
char
*
buf
,
int
len
);
#endif
/*
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
* Emacs will notice this stuff at the end of the file and automatically
...
...
arch/um/kernel/frame.c
View file @
9abe4b72
...
@@ -78,7 +78,8 @@ static int capture_stack(int (*child)(void *arg), void *arg, void *sp,
...
@@ -78,7 +78,8 @@ static int capture_stack(int (*child)(void *arg), void *arg, void *sp,
/* It has outlived its usefulness, so continue it so it can exit */
/* It has outlived its usefulness, so continue it so it can exit */
if
(
ptrace
(
PTRACE_CONT
,
pid
,
0
,
0
)
<
0
){
if
(
ptrace
(
PTRACE_CONT
,
pid
,
0
,
0
)
<
0
){
printf
(
"capture_stack : mmap failed - errno = %d
\n
"
,
errno
);
printf
(
"capture_stack : PTRACE_CONT failed - errno = %d
\n
"
,
errno
);
exit
(
1
);
exit
(
1
);
}
}
if
(
waitpid
(
pid
,
&
status
,
0
)
<
0
){
if
(
waitpid
(
pid
,
&
status
,
0
)
<
0
){
...
...
arch/um/kernel/irq_user.c
View file @
9abe4b72
...
@@ -128,15 +128,15 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
...
@@ -128,15 +128,15 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
if
(
type
==
IRQ_READ
)
events
=
POLLIN
|
POLLPRI
;
if
(
type
==
IRQ_READ
)
events
=
POLLIN
|
POLLPRI
;
else
events
=
POLLOUT
;
else
events
=
POLLOUT
;
*
new_fd
=
((
struct
irq_fd
)
{
next
:
NULL
,
*
new_fd
=
((
struct
irq_fd
)
{
.
next
=
NULL
,
id
:
dev_id
,
.
id
=
dev_id
,
fd
:
fd
,
.
fd
=
fd
,
type
:
type
,
.
type
=
type
,
irq
:
irq
,
.
irq
=
irq
,
pid
:
pid
,
.
pid
=
pid
,
events
:
events
,
.
events
=
events
,
current_events:
0
,
.
current_events
=
0
,
freed
:
0
}
);
.
freed
=
0
}
);
/* Critical section - locked by a spinlock because this stuff can
/* Critical section - locked by a spinlock because this stuff can
* be changed from interrupt handlers. The stuff above is done
* be changed from interrupt handlers. The stuff above is done
...
@@ -191,9 +191,9 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
...
@@ -191,9 +191,9 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
if
(
type
==
IRQ_WRITE
)
if
(
type
==
IRQ_WRITE
)
fd
=
-
1
;
fd
=
-
1
;
pollfds
[
pollfds_num
]
=
((
struct
pollfd
)
{
fd
:
fd
,
pollfds
[
pollfds_num
]
=
((
struct
pollfd
)
{
.
fd
=
fd
,
events
:
events
,
.
events
=
events
,
revents
:
0
});
.
revents
=
0
});
pollfds_num
++
;
pollfds_num
++
;
*
last_irq_ptr
=
new_fd
;
*
last_irq_ptr
=
new_fd
;
...
@@ -265,8 +265,8 @@ static int same_irq_and_dev(struct irq_fd *irq, void *d)
...
@@ -265,8 +265,8 @@ static int same_irq_and_dev(struct irq_fd *irq, void *d)
void
free_irq_by_irq_and_dev
(
int
irq
,
void
*
dev
)
void
free_irq_by_irq_and_dev
(
int
irq
,
void
*
dev
)
{
{
struct
irq_and_dev
data
=
((
struct
irq_and_dev
)
{
irq
:
irq
,
struct
irq_and_dev
data
=
((
struct
irq_and_dev
)
{
.
irq
=
irq
,
dev
:
dev
});
.
dev
=
dev
});
free_irq_by_cb
(
same_irq_and_dev
,
&
data
);
free_irq_by_cb
(
same_irq_and_dev
,
&
data
);
}
}
...
...
arch/um/kernel/ksyms.c
View file @
9abe4b72
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
#include "asm/processor.h"
#include "asm/processor.h"
#include "asm/unistd.h"
#include "asm/unistd.h"
#include "asm/pgalloc.h"
#include "asm/pgalloc.h"
#include "asm/pgtable.h"
#include "asm/page.h"
#include "asm/page.h"
#include "asm/tlbflush.h"
#include "asm/tlbflush.h"
#include "kern_util.h"
#include "kern_util.h"
...
@@ -42,7 +43,11 @@ EXPORT_SYMBOL(page_to_phys);
...
@@ -42,7 +43,11 @@ EXPORT_SYMBOL(page_to_phys);
EXPORT_SYMBOL
(
phys_to_page
);
EXPORT_SYMBOL
(
phys_to_page
);
EXPORT_SYMBOL
(
high_physmem
);
EXPORT_SYMBOL
(
high_physmem
);
EXPORT_SYMBOL
(
empty_zero_page
);
EXPORT_SYMBOL
(
empty_zero_page
);
EXPORT_SYMBOL
(
um_virt_to_phys
);
EXPORT_SYMBOL
(
mode_tt
);
EXPORT_SYMBOL
(
handle_page_fault
);
EXPORT_SYMBOL
(
os_getpid
);
EXPORT_SYMBOL
(
os_open_file
);
EXPORT_SYMBOL
(
os_open_file
);
EXPORT_SYMBOL
(
os_read_file
);
EXPORT_SYMBOL
(
os_read_file
);
EXPORT_SYMBOL
(
os_write_file
);
EXPORT_SYMBOL
(
os_write_file
);
...
...
arch/um/kernel/mem.c
View file @
9abe4b72
...
@@ -231,11 +231,11 @@ static int setup_one_range(int fd, char *driver, unsigned long start,
...
@@ -231,11 +231,11 @@ static int setup_one_range(int fd, char *driver, unsigned long start,
panic
(
"Failed to allocating mem_region"
);
panic
(
"Failed to allocating mem_region"
);
}
}
*
region
=
((
struct
mem_region
)
{
driver
:
driver
,
*
region
=
((
struct
mem_region
)
{
.
driver
=
driver
,
start_pfn
:
pfn
,
.
start_pfn
=
pfn
,
start
:
start
,
.
start
=
start
,
len
:
len
,
.
len
=
len
,
fd
:
fd
}
);
.
fd
=
fd
}
);
regions
[
i
]
=
region
;
regions
[
i
]
=
region
;
out:
out:
up
(
&
regions_sem
);
up
(
&
regions_sem
);
...
@@ -423,15 +423,15 @@ static struct list_head vm_reserved = LIST_HEAD_INIT(vm_reserved);
...
@@ -423,15 +423,15 @@ static struct list_head vm_reserved = LIST_HEAD_INIT(vm_reserved);
/* Static structures, linked in to the list in early boot */
/* Static structures, linked in to the list in early boot */
static
struct
vm_reserved
head
=
{
static
struct
vm_reserved
head
=
{
list
:
LIST_HEAD_INIT
(
head
.
list
),
.
list
=
LIST_HEAD_INIT
(
head
.
list
),
start
:
0
,
.
start
=
0
,
end
:
0xffffffff
.
end
=
0xffffffff
};
};
static
struct
vm_reserved
tail
=
{
static
struct
vm_reserved
tail
=
{
list
:
LIST_HEAD_INIT
(
tail
.
list
),
.
list
=
LIST_HEAD_INIT
(
tail
.
list
),
start
:
0
,
.
start
=
0
,
end
:
0xffffffff
.
end
=
0xffffffff
};
};
void
set_usable_vm
(
unsigned
long
start
,
unsigned
long
end
)
void
set_usable_vm
(
unsigned
long
start
,
unsigned
long
end
)
...
@@ -467,9 +467,9 @@ int reserve_vm(unsigned long start, unsigned long end, void *e)
...
@@ -467,9 +467,9 @@ int reserve_vm(unsigned long start, unsigned long end, void *e)
goto
out
;
goto
out
;
}
}
*
entry
=
((
struct
vm_reserved
)
*
entry
=
((
struct
vm_reserved
)
{
list
:
LIST_HEAD_INIT
(
entry
->
list
),
{
.
list
=
LIST_HEAD_INIT
(
entry
->
list
),
start
:
start
,
.
start
=
start
,
end
:
end
});
.
end
=
end
});
list_add
(
&
entry
->
list
,
&
prev
->
list
);
list_add
(
&
entry
->
list
,
&
prev
->
list
);
err
=
0
;
err
=
0
;
out:
out:
...
@@ -539,9 +539,9 @@ struct iomem {
...
@@ -539,9 +539,9 @@ struct iomem {
*/
*/
struct
iomem
iomem_regions
[
NREGIONS
]
=
{
[
0
...
NREGIONS
-
1
]
=
struct
iomem
iomem_regions
[
NREGIONS
]
=
{
[
0
...
NREGIONS
-
1
]
=
{
name
:
NULL
,
{
.
name
=
NULL
,
fd
:
-
1
,
.
fd
=
-
1
,
size
:
0
}
};
.
size
=
0
}
};
int
num_iomem_regions
=
0
;
int
num_iomem_regions
=
0
;
...
@@ -551,9 +551,9 @@ void add_iomem(char *name, int fd, unsigned long size)
...
@@ -551,9 +551,9 @@ void add_iomem(char *name, int fd, unsigned long size)
return
;
return
;
size
=
(
size
+
PAGE_SIZE
-
1
)
&
PAGE_MASK
;
size
=
(
size
+
PAGE_SIZE
-
1
)
&
PAGE_MASK
;
iomem_regions
[
num_iomem_regions
++
]
=
iomem_regions
[
num_iomem_regions
++
]
=
((
struct
iomem
)
{
name
:
name
,
((
struct
iomem
)
{
.
name
=
name
,
fd
:
fd
,
.
fd
=
fd
,
size
:
size
}
);
.
size
=
size
}
);
}
}
int
setup_iomem
(
void
)
int
setup_iomem
(
void
)
...
...
arch/um/kernel/sigio_user.c
View file @
9abe4b72
...
@@ -52,7 +52,7 @@ void __init check_one_sigio(void (*proc)(int, int))
...
@@ -52,7 +52,7 @@ void __init check_one_sigio(void (*proc)(int, int))
{
{
struct
sigaction
old
,
new
;
struct
sigaction
old
,
new
;
struct
termios
tt
;
struct
termios
tt
;
struct
openpty_arg
pty
=
{
master
:
-
1
,
slave
:
-
1
};
struct
openpty_arg
pty
=
{
.
master
=
-
1
,
.
slave
=
-
1
};
int
master
,
slave
,
flags
;
int
master
,
slave
,
flags
;
initial_thread_cb
(
openpty_cb
,
&
pty
);
initial_thread_cb
(
openpty_cb
,
&
pty
);
...
@@ -170,15 +170,15 @@ struct pollfds {
...
@@ -170,15 +170,15 @@ struct pollfds {
* synchronizes with it.
* synchronizes with it.
*/
*/
struct
pollfds
current_poll
=
{
struct
pollfds
current_poll
=
{
poll
:
NULL
,
.
poll
=
NULL
,
size
:
0
,
.
size
=
0
,
used
:
0
.
used
=
0
};
};
struct
pollfds
next_poll
=
{
struct
pollfds
next_poll
=
{
poll
:
NULL
,
.
poll
=
NULL
,
size
:
0
,
.
size
=
0
,
used
:
0
.
used
=
0
};
};
static
int
write_sigio_thread
(
void
*
unused
)
static
int
write_sigio_thread
(
void
*
unused
)
...
@@ -298,9 +298,9 @@ int add_sigio_fd(int fd, int read)
...
@@ -298,9 +298,9 @@ int add_sigio_fd(int fd, int read)
if
(
read
)
events
=
POLLIN
;
if
(
read
)
events
=
POLLIN
;
else
events
=
POLLOUT
;
else
events
=
POLLOUT
;
next_poll
.
poll
[
n
-
1
]
=
((
struct
pollfd
)
{
fd
:
fd
,
next_poll
.
poll
[
n
-
1
]
=
((
struct
pollfd
)
{
.
fd
=
fd
,
events
:
events
,
.
events
=
events
,
revents
:
0
});
.
revents
=
0
});
update_thread
();
update_thread
();
out:
out:
sigio_unlock
();
sigio_unlock
();
...
@@ -348,12 +348,12 @@ static int setup_initial_poll(int fd)
...
@@ -348,12 +348,12 @@ static int setup_initial_poll(int fd)
printk
(
"setup_initial_poll : failed to allocate poll
\n
"
);
printk
(
"setup_initial_poll : failed to allocate poll
\n
"
);
return
(
-
1
);
return
(
-
1
);
}
}
*
p
=
((
struct
pollfd
)
{
fd
:
fd
,
*
p
=
((
struct
pollfd
)
{
.
fd
=
fd
,
events
:
POLLIN
,
.
events
=
POLLIN
,
revents
:
0
});
.
revents
=
0
});
current_poll
=
((
struct
pollfds
)
{
poll
:
p
,
current_poll
=
((
struct
pollfds
)
{
.
poll
=
p
,
used
:
1
,
.
used
=
1
,
size
:
1
});
.
size
=
1
});
return
(
0
);
return
(
0
);
}
}
...
@@ -420,7 +420,8 @@ int read_sigio_fd(int fd)
...
@@ -420,7 +420,8 @@ int read_sigio_fd(int fd)
static
void
sigio_cleanup
(
void
)
static
void
sigio_cleanup
(
void
)
{
{
if
(
write_sigio_pid
!=
-
1
)
kill
(
write_sigio_pid
,
SIGKILL
);
if
(
write_sigio_pid
!=
-
1
)
kill
(
write_sigio_pid
,
SIGKILL
);
}
}
__uml_exitcall
(
sigio_cleanup
);
__uml_exitcall
(
sigio_cleanup
);
...
...
arch/um/kernel/signal_kern.c
View file @
9abe4b72
...
@@ -29,18 +29,6 @@
...
@@ -29,18 +29,6 @@
EXPORT_SYMBOL
(
block_signals
);
EXPORT_SYMBOL
(
block_signals
);
EXPORT_SYMBOL
(
unblock_signals
);
EXPORT_SYMBOL
(
unblock_signals
);
int
probe_stack
(
unsigned
long
sp
,
int
delta
)
{
int
n
;
if
((
get_user
(
n
,
(
int
*
)
sp
)
!=
0
)
||
(
put_user
(
n
,
(
int
*
)
sp
)
!=
0
)
||
(
get_user
(
n
,
(
int
*
)
(
sp
-
delta
))
!=
0
)
||
(
put_user
(
n
,
(
int
*
)
(
sp
-
delta
))
!=
0
))
return
(
-
EFAULT
);
return
(
0
);
}
static
void
force_segv
(
int
sig
)
static
void
force_segv
(
int
sig
)
{
{
if
(
sig
==
SIGSEGV
){
if
(
sig
==
SIGSEGV
){
...
...
arch/um/kernel/skas/include/uaccess.h
View file @
9abe4b72
...
@@ -27,9 +27,6 @@ static inline int verify_area_skas(int type, const void * addr,
...
@@ -27,9 +27,6 @@ static inline int verify_area_skas(int type, const void * addr,
return
(
access_ok_skas
(
type
,
addr
,
size
)
?
0
:
-
EFAULT
);
return
(
access_ok_skas
(
type
,
addr
,
size
)
?
0
:
-
EFAULT
);
}
}
extern
void
*
um_virt_to_phys
(
struct
task_struct
*
task
,
unsigned
long
virt
,
pte_t
*
pte_out
);
static
inline
unsigned
long
maybe_map
(
unsigned
long
virt
,
int
is_write
)
static
inline
unsigned
long
maybe_map
(
unsigned
long
virt
,
int
is_write
)
{
{
pte_t
pte
;
pte_t
pte
;
...
...
arch/um/kernel/skas/tlb.c
View file @
9abe4b72
...
@@ -99,7 +99,6 @@ static void flush_kernel_vm_range(unsigned long start, unsigned long end)
...
@@ -99,7 +99,6 @@ static void flush_kernel_vm_range(unsigned long start, unsigned long end)
protect_memory
(
addr
,
PAGE_SIZE
,
1
,
1
,
1
,
1
);
protect_memory
(
addr
,
PAGE_SIZE
,
1
,
1
,
1
,
1
);
}
}
addr
+=
PAGE_SIZE
;
addr
+=
PAGE_SIZE
;
}
}
else
{
else
{
if
(
pmd_newpage
(
*
pmd
)){
if
(
pmd_newpage
(
*
pmd
)){
...
...
arch/um/kernel/time.c
View file @
9abe4b72
...
@@ -108,7 +108,7 @@ void idle_sleep(int secs)
...
@@ -108,7 +108,7 @@ void idle_sleep(int secs)
ts
.
tv_sec
=
secs
;
ts
.
tv_sec
=
secs
;
ts
.
tv_nsec
=
0
;
ts
.
tv_nsec
=
0
;
nanosleep
(
&
ts
,
&
ts
);
nanosleep
(
&
ts
,
NULL
);
}
}
/*
/*
...
...
arch/um/kernel/trap_kern.c
View file @
9abe4b72
...
@@ -109,7 +109,8 @@ unsigned long segv(unsigned long address, unsigned long ip, int is_write,
...
@@ -109,7 +109,8 @@ unsigned long segv(unsigned long address, unsigned long ip, int is_write,
flush_tlb_kernel_vm
();
flush_tlb_kernel_vm
();
return
(
0
);
return
(
0
);
}
}
if
(
current
->
mm
==
NULL
)
panic
(
"Segfault with no mm"
);
if
(
current
->
mm
==
NULL
)
panic
(
"Segfault with no mm"
);
err
=
handle_page_fault
(
address
,
ip
,
is_write
,
is_user
,
&
si
.
si_code
);
err
=
handle_page_fault
(
address
,
ip
,
is_write
,
is_user
,
&
si
.
si_code
);
catcher
=
current
->
thread
.
fault_catcher
;
catcher
=
current
->
thread
.
fault_catcher
;
...
...
arch/um/kernel/tt/gdb.c
View file @
9abe4b72
...
@@ -62,11 +62,11 @@ static void gdb_announce(char *dev_name, int dev)
...
@@ -62,11 +62,11 @@ static void gdb_announce(char *dev_name, int dev)
}
}
static
struct
chan_opts
opts
=
{
static
struct
chan_opts
opts
=
{
announce
:
gdb_announce
,
.
announce
=
gdb_announce
,
xterm_title
:
"UML kernel debugger"
,
.
xterm_title
=
"UML kernel debugger"
,
raw
:
0
,
.
raw
=
0
,
tramp_stack
:
0
,
.
tramp_stack
=
0
,
in_kernel
:
0
,
.
in_kernel
=
0
,
};
};
/* Accessed by the tracing thread, which automatically serializes access */
/* Accessed by the tracing thread, which automatically serializes access */
...
...
arch/um/kernel/tt/gdb_kern.c
View file @
9abe4b72
...
@@ -13,9 +13,9 @@ extern int gdb_config(char *str);
...
@@ -13,9 +13,9 @@ extern int gdb_config(char *str);
extern
int
gdb_remove
(
char
*
unused
);
extern
int
gdb_remove
(
char
*
unused
);
static
struct
mc_device
gdb_mc
=
{
static
struct
mc_device
gdb_mc
=
{
name:
"gdb"
,
.
name
=
"gdb"
,
config:
gdb_config
,
.
config
=
gdb_config
,
remove:
gdb_remove
,
.
remove
=
gdb_remove
,
};
};
int
gdb_mc_init
(
void
)
int
gdb_mc_init
(
void
)
...
...
arch/um/kernel/tt/ptproxy/proxy.c
View file @
9abe4b72
...
@@ -129,14 +129,14 @@ static int parent_syscall(debugger_state *debugger, int pid);
...
@@ -129,14 +129,14 @@ static int parent_syscall(debugger_state *debugger, int pid);
int
init_parent_proxy
(
int
pid
)
int
init_parent_proxy
(
int
pid
)
{
{
parent
=
((
debugger_state
)
{
pid
:
pid
,
parent
=
((
debugger_state
)
{
.
pid
=
pid
,
wait_options
:
0
,
.
wait_options
=
0
,
wait_status_ptr
:
NULL
,
.
wait_status_ptr
=
NULL
,
waiting
:
0
,
.
waiting
=
0
,
real_wait
:
0
,
.
real_wait
=
0
,
expecting_child
:
0
,
.
expecting_child
=
0
,
handle_trace
:
parent_syscall
,
.
handle_trace
=
parent_syscall
,
debugee
:
NULL
}
);
.
debugee
=
NULL
}
);
return
(
0
);
return
(
0
);
}
}
...
...
arch/um/kernel/um_arch.c
View file @
9abe4b72
...
@@ -85,10 +85,10 @@ static void c_stop(struct seq_file *m, void *v)
...
@@ -85,10 +85,10 @@ static void c_stop(struct seq_file *m, void *v)
}
}
struct
seq_operations
cpuinfo_op
=
{
struct
seq_operations
cpuinfo_op
=
{
start:
c_start
,
.
start
=
c_start
,
next:
c_next
,
.
next
=
c_next
,
stop:
c_stop
,
.
stop
=
c_stop
,
show:
show_cpuinfo
,
.
show
=
show_cpuinfo
,
};
};
pte_t
*
__bad_pagetable
(
void
)
pte_t
*
__bad_pagetable
(
void
)
...
@@ -317,6 +317,11 @@ int linux_main(int argc, char **argv)
...
@@ -317,6 +317,11 @@ int linux_main(int argc, char **argv)
if
(
physmem_size
>
max_physmem
){
if
(
physmem_size
>
max_physmem
){
highmem
=
physmem_size
-
max_physmem
;
highmem
=
physmem_size
-
max_physmem
;
physmem_size
-=
highmem
;
physmem_size
-=
highmem
;
#ifndef CONFIG_HIGHMEM
highmem
=
0
;
printf
(
"CONFIG_HIGHMEM not enabled - physical memory shrunk "
"to %ld bytes
\n
"
,
physmem_size
);
#endif
}
}
high_physmem
=
uml_physmem
+
physmem_size
;
high_physmem
=
uml_physmem
+
physmem_size
;
...
@@ -361,9 +366,9 @@ static int panic_exit(struct notifier_block *self, unsigned long unused1,
...
@@ -361,9 +366,9 @@ static int panic_exit(struct notifier_block *self, unsigned long unused1,
}
}
static
struct
notifier_block
panic_exit_notifier
=
{
static
struct
notifier_block
panic_exit_notifier
=
{
notifier_call
:
panic_exit
,
.
notifier_call
=
panic_exit
,
next
:
NULL
,
.
next
=
NULL
,
priority
:
0
.
priority
=
0
};
};
void
__init
setup_arch
(
char
**
cmdline_p
)
void
__init
setup_arch
(
char
**
cmdline_p
)
...
...
arch/um/kernel/umid.c
View file @
9abe4b72
...
@@ -186,7 +186,6 @@ int not_dead_yet(char *dir)
...
@@ -186,7 +186,6 @@ int not_dead_yet(char *dir)
}
}
if
(
!
dead
)
return
(
1
);
if
(
!
dead
)
return
(
1
);
return
(
actually_do_remove
(
dir
));
return
(
actually_do_remove
(
dir
));
return
(
0
);
}
}
static
int
__init
set_uml_dir
(
char
*
name
,
int
*
add
)
static
int
__init
set_uml_dir
(
char
*
name
,
int
*
add
)
...
...
arch/um/os-Linux/drivers/ethertap_kern.c
View file @
9abe4b72
...
@@ -28,11 +28,11 @@ static void etap_init(struct net_device *dev, void *data)
...
@@ -28,11 +28,11 @@ static void etap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
pri
=
dev
->
priv
;
epri
=
(
struct
ethertap_data
*
)
pri
->
user
;
epri
=
(
struct
ethertap_data
*
)
pri
->
user
;
*
epri
=
((
struct
ethertap_data
)
*
epri
=
((
struct
ethertap_data
)
{
dev_name
:
init
->
dev_name
,
{
.
dev_name
=
init
->
dev_name
,
gate_addr
:
init
->
gate_addr
,
.
gate_addr
=
init
->
gate_addr
,
data_fd
:
-
1
,
.
data_fd
=
-
1
,
control_fd
:
-
1
,
.
control_fd
=
-
1
,
dev
:
dev
});
.
dev
=
dev
});
printk
(
"ethertap backend - %s"
,
epri
->
dev_name
);
printk
(
"ethertap backend - %s"
,
epri
->
dev_name
);
if
(
epri
->
gate_addr
!=
NULL
)
if
(
epri
->
gate_addr
!=
NULL
)
...
@@ -69,10 +69,10 @@ static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
...
@@ -69,10 +69,10 @@ static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
}
}
struct
net_kern_info
ethertap_kern_info
=
{
struct
net_kern_info
ethertap_kern_info
=
{
init:
etap_init
,
.
init
=
etap_init
,
protocol:
eth_protocol
,
.
protocol
=
eth_protocol
,
read:
etap_read
,
.
read
=
etap_read
,
write:
etap_write
,
.
write
=
etap_write
,
};
};
int
ethertap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
int
ethertap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -80,8 +80,8 @@ int ethertap_setup(char *str, char **mac_out, void *data)
...
@@ -80,8 +80,8 @@ int ethertap_setup(char *str, char **mac_out, void *data)
struct
ethertap_init
*
init
=
data
;
struct
ethertap_init
*
init
=
data
;
*
init
=
((
struct
ethertap_init
)
*
init
=
((
struct
ethertap_init
)
{
dev_name
:
NULL
,
{
.
dev_name
=
NULL
,
gate_addr
:
NULL
});
.
gate_addr
=
NULL
});
if
(
tap_setup_common
(
str
,
"ethertap"
,
&
init
->
dev_name
,
mac_out
,
if
(
tap_setup_common
(
str
,
"ethertap"
,
&
init
->
dev_name
,
mac_out
,
&
init
->
gate_addr
))
&
init
->
gate_addr
))
return
(
0
);
return
(
0
);
...
@@ -94,12 +94,12 @@ int ethertap_setup(char *str, char **mac_out, void *data)
...
@@ -94,12 +94,12 @@ int ethertap_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
ethertap_transport
=
{
static
struct
transport
ethertap_transport
=
{
list
:
LIST_HEAD_INIT
(
ethertap_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
ethertap_transport
.
list
),
name
:
"ethertap"
,
.
name
=
"ethertap"
,
setup
:
ethertap_setup
,
.
setup
=
ethertap_setup
,
user
:
&
ethertap_user_info
,
.
user
=
&
ethertap_user_info
,
kern
:
&
ethertap_kern_info
,
.
kern
=
&
ethertap_kern_info
,
private_size
:
sizeof
(
struct
ethertap_data
),
.
private_size
=
sizeof
(
struct
ethertap_data
),
};
};
static
int
register_ethertap
(
void
)
static
int
register_ethertap
(
void
)
...
...
arch/um/os-Linux/drivers/ethertap_user.c
View file @
9abe4b72
...
@@ -216,14 +216,14 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask,
...
@@ -216,14 +216,14 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask,
}
}
struct
net_user_info
ethertap_user_info
=
{
struct
net_user_info
ethertap_user_info
=
{
init:
etap_user_init
,
.
init
=
etap_user_init
,
open:
etap_open
,
.
open
=
etap_open
,
close:
etap_close
,
.
close
=
etap_close
,
remove:
NULL
,
.
remove
=
NULL
,
set_mtu:
etap_set_mtu
,
.
set_mtu
=
etap_set_mtu
,
add_address:
etap_add_addr
,
.
add_address
=
etap_add_addr
,
delete_address:
etap_del_addr
,
.
delete_address
=
etap_del_addr
,
max_packet:
MAX_PACKET
-
ETH_HEADER_ETHERTAP
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_ETHERTAP
};
};
/*
/*
...
...
arch/um/os-Linux/drivers/tuntap_kern.c
View file @
9abe4b72
...
@@ -28,11 +28,11 @@ static void tuntap_init(struct net_device *dev, void *data)
...
@@ -28,11 +28,11 @@ static void tuntap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
pri
=
dev
->
priv
;
tpri
=
(
struct
tuntap_data
*
)
pri
->
user
;
tpri
=
(
struct
tuntap_data
*
)
pri
->
user
;
*
tpri
=
((
struct
tuntap_data
)
*
tpri
=
((
struct
tuntap_data
)
{
dev_name
:
init
->
dev_name
,
{
.
dev_name
=
init
->
dev_name
,
fixed_config
:
(
init
->
dev_name
!=
NULL
),
.
fixed_config
=
(
init
->
dev_name
!=
NULL
),
gate_addr
:
init
->
gate_addr
,
.
gate_addr
=
init
->
gate_addr
,
fd
:
-
1
,
.
fd
=
-
1
,
dev
:
dev
});
.
dev
=
dev
});
printk
(
"TUN/TAP backend - "
);
printk
(
"TUN/TAP backend - "
);
if
(
tpri
->
gate_addr
!=
NULL
)
if
(
tpri
->
gate_addr
!=
NULL
)
printk
(
"IP = %s"
,
tpri
->
gate_addr
);
printk
(
"IP = %s"
,
tpri
->
gate_addr
);
...
@@ -55,10 +55,10 @@ static int tuntap_write(int fd, struct sk_buff **skb,
...
@@ -55,10 +55,10 @@ static int tuntap_write(int fd, struct sk_buff **skb,
}
}
struct
net_kern_info
tuntap_kern_info
=
{
struct
net_kern_info
tuntap_kern_info
=
{
init:
tuntap_init
,
.
init
=
tuntap_init
,
protocol:
eth_protocol
,
.
protocol
=
eth_protocol
,
read:
tuntap_read
,
.
read
=
tuntap_read
,
write:
tuntap_write
,
.
write
=
tuntap_write
,
};
};
int
tuntap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
int
tuntap_setup
(
char
*
str
,
char
**
mac_out
,
void
*
data
)
...
@@ -66,8 +66,8 @@ int tuntap_setup(char *str, char **mac_out, void *data)
...
@@ -66,8 +66,8 @@ int tuntap_setup(char *str, char **mac_out, void *data)
struct
tuntap_init
*
init
=
data
;
struct
tuntap_init
*
init
=
data
;
*
init
=
((
struct
tuntap_init
)
*
init
=
((
struct
tuntap_init
)
{
dev_name
:
NULL
,
{
.
dev_name
=
NULL
,
gate_addr
:
NULL
});
.
gate_addr
=
NULL
});
if
(
tap_setup_common
(
str
,
"tuntap"
,
&
init
->
dev_name
,
mac_out
,
if
(
tap_setup_common
(
str
,
"tuntap"
,
&
init
->
dev_name
,
mac_out
,
&
init
->
gate_addr
))
&
init
->
gate_addr
))
return
(
0
);
return
(
0
);
...
@@ -76,13 +76,13 @@ int tuntap_setup(char *str, char **mac_out, void *data)
...
@@ -76,13 +76,13 @@ int tuntap_setup(char *str, char **mac_out, void *data)
}
}
static
struct
transport
tuntap_transport
=
{
static
struct
transport
tuntap_transport
=
{
list
:
LIST_HEAD_INIT
(
tuntap_transport
.
list
),
.
list
=
LIST_HEAD_INIT
(
tuntap_transport
.
list
),
name
:
"tuntap"
,
.
name
=
"tuntap"
,
setup
:
tuntap_setup
,
.
setup
=
tuntap_setup
,
user
:
&
tuntap_user_info
,
.
user
=
&
tuntap_user_info
,
kern
:
&
tuntap_kern_info
,
.
kern
=
&
tuntap_kern_info
,
private_size
:
sizeof
(
struct
tuntap_data
),
.
private_size
=
sizeof
(
struct
tuntap_data
),
setup_size
:
sizeof
(
struct
tuntap_init
),
.
setup_size
=
sizeof
(
struct
tuntap_init
),
};
};
static
int
register_tuntap
(
void
)
static
int
register_tuntap
(
void
)
...
...
arch/um/os-Linux/drivers/tuntap_user.c
View file @
9abe4b72
...
@@ -201,14 +201,14 @@ static int tuntap_set_mtu(int mtu, void *data)
...
@@ -201,14 +201,14 @@ static int tuntap_set_mtu(int mtu, void *data)
}
}
struct
net_user_info
tuntap_user_info
=
{
struct
net_user_info
tuntap_user_info
=
{
init:
tuntap_user_init
,
.
init
=
tuntap_user_init
,
open:
tuntap_open
,
.
open
=
tuntap_open
,
close:
tuntap_close
,
.
close
=
tuntap_close
,
remove:
NULL
,
.
remove
=
NULL
,
set_mtu:
tuntap_set_mtu
,
.
set_mtu
=
tuntap_set_mtu
,
add_address:
tuntap_add_addr
,
.
add_address
=
tuntap_add_addr
,
delete_address:
tuntap_del_addr
,
.
delete_address
=
tuntap_del_addr
,
max_packet:
MAX_PACKET
.
max_packet
=
MAX_PACKET
};
};
/*
/*
...
...
arch/um/os-Linux/file.c
View file @
9abe4b72
...
@@ -276,8 +276,8 @@ int os_rcv_fd(int fd, int *helper_pid_out)
...
@@ -276,8 +276,8 @@ int os_rcv_fd(int fd, int *helper_pid_out)
msg
.
msg_name
=
NULL
;
msg
.
msg_name
=
NULL
;
msg
.
msg_namelen
=
0
;
msg
.
msg_namelen
=
0
;
iov
=
((
struct
iovec
)
{
iov_base
:
helper_pid_out
,
iov
=
((
struct
iovec
)
{
.
iov_base
=
helper_pid_out
,
iov_len
:
sizeof
(
*
helper_pid_out
)
});
.
iov_len
=
sizeof
(
*
helper_pid_out
)
});
msg
.
msg_iov
=
&
iov
;
msg
.
msg_iov
=
&
iov
;
msg
.
msg_iovlen
=
1
;
msg
.
msg_iovlen
=
1
;
msg
.
msg_control
=
buf
;
msg
.
msg_control
=
buf
;
...
...
arch/um/sys-i386/Makefile
View file @
9abe4b72
...
@@ -9,6 +9,7 @@ USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o
...
@@ -9,6 +9,7 @@ USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o
USER_OBJS
:=
$(
foreach
file,
$(USER_OBJS)
,
$(obj)
/
$(file)
)
USER_OBJS
:=
$(
foreach
file,
$(USER_OBJS)
,
$(obj)
/
$(file)
)
SYMLINKS
=
semaphore.c extable.c highmem.c module.c
SYMLINKS
=
semaphore.c extable.c highmem.c module.c
SYMLINKS
:=
$(
foreach
f,
$(SYMLINKS)
,
$(src)
/
$f
)
semaphore.c-dir
=
kernel
semaphore.c-dir
=
kernel
extable.c-dir
=
mm
extable.c-dir
=
mm
...
@@ -23,7 +24,7 @@ endef
...
@@ -23,7 +24,7 @@ endef
$(USER_OBJS)
:
%.o: %.c
$(USER_OBJS)
:
%.o: %.c
$(CC)
$
(
CFLAGS_
$(
notdir
$@
)
)
$(USER_CFLAGS)
-c
-o
$@
$<
$(CC)
$
(
CFLAGS_
$(
notdir
$@
)
)
$(USER_CFLAGS)
-c
-o
$@
$<
$(
foreach f,$(SYMLINKS),$(src)/$f
)
:
$(
SYMLINKS
)
:
$(
call
make_link,
$@
)
$(
call
make_link,
$@
)
clean
:
clean
:
...
...
include/asm-um/pgtable.h
View file @
9abe4b72
...
@@ -14,6 +14,9 @@
...
@@ -14,6 +14,9 @@
extern
pgd_t
swapper_pg_dir
[
1024
];
extern
pgd_t
swapper_pg_dir
[
1024
];
extern
void
*
um_virt_to_phys
(
struct
task_struct
*
task
,
unsigned
long
virt
,
pte_t
*
pte_out
);
/* zero page used for uninitialized stuff */
/* zero page used for uninitialized stuff */
extern
unsigned
long
*
empty_zero_page
;
extern
unsigned
long
*
empty_zero_page
;
...
...
include/asm-um/processor-i386.h
View file @
9abe4b72
...
@@ -14,8 +14,8 @@ struct arch_thread {
...
@@ -14,8 +14,8 @@ struct arch_thread {
int
debugregs_seq
;
int
debugregs_seq
;
};
};
#define INIT_ARCH_THREAD {
debugregs :
{ [ 0 ... 7 ] = 0 }, \
#define INIT_ARCH_THREAD {
.debugregs =
{ [ 0 ... 7 ] = 0 }, \
debugregs_seq :
0 }
.debugregs_seq =
0 }
#include "asm/arch/user.h"
#include "asm/arch/user.h"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment