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
Kirill Smelkov
linux
Commits
7b9870d9
Commit
7b9870d9
authored
Jan 16, 2003
by
Jeff Dike
Browse files
Options
Browse Files
Download
Plain Diff
Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5
into jdike.wstearns.org:/home/jdike/linux/stack-2.5
parents
eec91b48
8f41601a
Changes
48
Hide whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
595 additions
and
571 deletions
+595
-571
arch/um/Kconfig
arch/um/Kconfig
+8
-0
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
+5
-5
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
+22
-22
arch/um/drivers/pty.c
arch/um/drivers/pty.c
+23
-23
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/kernel/init_task.c
arch/um/kernel/init_task.c
+8
-8
arch/um/kernel/irq_user.c
arch/um/kernel/irq_user.c
+14
-14
arch/um/kernel/mem.c
arch/um/kernel/mem.c
+20
-20
arch/um/kernel/process.c
arch/um/kernel/process.c
+4
-3
arch/um/kernel/process_kern.c
arch/um/kernel/process_kern.c
+5
-1
arch/um/kernel/sigio_user.c
arch/um/kernel/sigio_user.c
+16
-16
arch/um/kernel/tt/gdb.c
arch/um/kernel/tt/gdb.c
+5
-5
arch/um/kernel/tt/process_kern.c
arch/um/kernel/tt/process_kern.c
+7
-2
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
+7
-7
arch/um/kernel/user_util.c
arch/um/kernel/user_util.c
+6
-2
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
include/asm-um/current.h
include/asm-um/current.h
+2
-1
include/asm-um/processor-generic.h
include/asm-um/processor-generic.h
+13
-13
include/asm-um/processor-i386.h
include/asm-um/processor-i386.h
+2
-2
No files found.
arch/um/Kconfig
View file @
7b9870d9
...
...
@@ -164,6 +164,14 @@ config KERNEL_HALF_GIGS
config HIGHMEM
bool "Highmem support"
config KERNEL_STACK_ORDER
int "Kernel stack size order"
default 2
help
This option determines the size of UML kernel stacks. They will
be 1 << order pages. The default is OK unless you're running Valgrind
on UML, in which case, set this to 3.
endmenu
...
...
arch/um/drivers/chan_kern.c
View file @
7b9870d9
...
...
@@ -75,15 +75,15 @@ static void not_configged_free(void *data)
}
static
struct
chan_ops
not_configged_ops
=
{
init:
not_configged_init
,
open:
not_configged_open
,
close:
not_configged_close
,
read:
not_configged_read
,
write:
not_configged_write
,
console_write:
not_configged_console_write
,
window_size:
not_configged_window_size
,
free:
not_configged_free
,
winch:
0
,
.
init
=
not_configged_init
,
.
open
=
not_configged_open
,
.
close
=
not_configged_close
,
.
read
=
not_configged_read
,
.
write
=
not_configged_write
,
.
console_write
=
not_configged_console_write
,
.
window_size
=
not_configged_window_size
,
.
free
=
not_configged_free
,
.
winch
=
0
,
};
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,
chan
=
kmalloc
(
sizeof
(
*
chan
),
GFP_KERNEL
);
if
(
chan
==
NULL
)
return
(
NULL
);
*
chan
=
((
struct
chan
)
{
list
:
LIST_HEAD_INIT
(
chan
->
list
),
primary
:
1
,
input
:
0
,
output
:
0
,
opened
:
0
,
fd
:
-
1
,
pri
:
pri
,
ops
:
ops
,
data
:
data
});
*
chan
=
((
struct
chan
)
{
.
list
=
LIST_HEAD_INIT
(
chan
->
list
),
.
primary
=
1
,
.
input
=
0
,
.
output
=
0
,
.
opened
=
0
,
.
fd
=
-
1
,
.
pri
=
pri
,
.
ops
=
ops
,
.
data
=
data
});
return
(
chan
);
}
...
...
arch/um/drivers/chan_user.c
View file @
7b9870d9
...
...
@@ -159,9 +159,9 @@ static int winch_tramp(int fd, void *device_data, int *fd_out)
return
(
err
);
}
data
=
((
struct
winch_data
)
{
pty_fd
:
fd
,
pipe_fd
:
fds
[
1
],
close_me
:
fds
[
0
]
}
);
data
=
((
struct
winch_data
)
{
.
pty_fd
=
fd
,
.
pipe_fd
=
fds
[
1
],
.
close_me
=
fds
[
0
]
}
);
pid
=
run_helper_thread
(
winch_thread
,
&
data
,
0
,
&
stack
,
0
);
if
(
pid
<
0
){
printk
(
"fork of winch_thread failed - errno = %d
\n
"
,
errno
);
...
...
arch/um/drivers/daemon_kern.c
View file @
7b9870d9
...
...
@@ -28,14 +28,14 @@ void daemon_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
dpri
=
(
struct
daemon_data
*
)
pri
->
user
;
*
dpri
=
((
struct
daemon_data
)
{
sock_type
:
init
->
sock_type
,
ctl_sock
:
init
->
ctl_sock
,
ctl_addr
:
NULL
,
data_addr
:
NULL
,
local_addr
:
NULL
,
fd
:
-
1
,
control
:
-
1
,
dev
:
dev
});
{
.
sock_type
=
init
->
sock_type
,
.
ctl_sock
=
init
->
ctl_sock
,
.
ctl_addr
=
NULL
,
.
data_addr
=
NULL
,
.
local_addr
=
NULL
,
.
fd
=
-
1
,
.
control
=
-
1
,
.
dev
=
dev
});
printk
(
"daemon backend (uml_switch version %d) - %s:%s"
,
SWITCH_VERSION
,
dpri
->
sock_type
,
dpri
->
ctl_sock
);
...
...
@@ -59,10 +59,10 @@ static int daemon_write(int fd, struct sk_buff **skb,
}
static
struct
net_kern_info
daemon_kern_info
=
{
init:
daemon_init
,
protocol:
eth_protocol
,
read:
daemon_read
,
write:
daemon_write
,
.
init
=
daemon_init
,
.
protocol
=
eth_protocol
,
.
read
=
daemon_read
,
.
write
=
daemon_write
,
};
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
;
*
init
=
((
struct
daemon_init
)
{
sock_type
:
"unix"
,
ctl_sock
:
"/tmp/uml.ctl"
});
{
.
sock_type
=
"unix"
,
.
ctl_sock
=
"/tmp/uml.ctl"
});
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
sock_type
,
&
init
->
ctl_sock
,
NULL
);
...
...
@@ -84,13 +84,13 @@ int daemon_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
daemon_transport
=
{
list
:
LIST_HEAD_INIT
(
daemon_transport
.
list
),
name
:
"daemon"
,
setup
:
daemon_setup
,
user
:
&
daemon_user_info
,
kern
:
&
daemon_kern_info
,
private_size
:
sizeof
(
struct
daemon_data
),
setup_size
:
sizeof
(
struct
daemon_init
),
.
list
=
LIST_HEAD_INIT
(
daemon_transport
.
list
),
.
name
=
"daemon"
,
.
setup
=
daemon_setup
,
.
user
=
&
daemon_user_info
,
.
kern
=
&
daemon_kern_info
,
.
private_size
=
sizeof
(
struct
daemon_data
),
.
setup_size
=
sizeof
(
struct
daemon_init
),
};
static
int
register_daemon
(
void
)
...
...
arch/um/drivers/daemon_user.c
View file @
7b9870d9
...
...
@@ -172,14 +172,14 @@ static int daemon_set_mtu(int mtu, void *data)
}
struct
net_user_info
daemon_user_info
=
{
init:
daemon_user_init
,
open:
daemon_open
,
close:
NULL
,
remove:
daemon_remove
,
set_mtu:
daemon_set_mtu
,
add_address:
NULL
,
delete_address:
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
init
=
daemon_user_init
,
.
open
=
daemon_open
,
.
close
=
NULL
,
.
remove
=
daemon_remove
,
.
set_mtu
=
daemon_set_mtu
,
.
add_address
=
NULL
,
.
delete_address
=
NULL
,
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
/*
...
...
arch/um/drivers/fd.c
View file @
7b9870d9
...
...
@@ -36,8 +36,8 @@ void *fd_init(char *str, int device, struct chan_opts *opts)
return
(
NULL
);
}
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
fd_chan
)
{
fd
:
n
,
raw
:
opts
->
raw
});
*
data
=
((
struct
fd_chan
)
{
.
fd
=
n
,
.
raw
=
opts
->
raw
});
return
(
data
);
}
...
...
@@ -72,16 +72,16 @@ int fd_console_write(int fd, const char *buf, int n, void *d)
}
struct
chan_ops
fd_ops
=
{
type:
"fd"
,
init:
fd_init
,
open:
fd_open
,
close:
fd_close
,
read:
generic_read
,
write:
generic_write
,
console_write:
fd_console_write
,
window_size:
generic_window_size
,
free:
generic_free
,
winch:
1
,
.
type
=
"fd"
,
.
init
=
fd_init
,
.
open
=
fd_open
,
.
close
=
fd_close
,
.
read
=
generic_read
,
.
write
=
generic_write
,
.
console_write
=
fd_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
generic_free
,
.
winch
=
1
,
};
/*
...
...
arch/um/drivers/harddog_kern.c
View file @
7b9870d9
...
...
@@ -145,17 +145,17 @@ static int harddog_ioctl(struct inode *inode, struct file *file,
}
static
struct
file_operations
harddog_fops
=
{
owner:
THIS_MODULE
,
write:
harddog_write
,
ioctl:
harddog_ioctl
,
open:
harddog_open
,
release:
harddog_release
,
.
owner
=
THIS_MODULE
,
.
write
=
harddog_write
,
.
ioctl
=
harddog_ioctl
,
.
open
=
harddog_open
,
.
release
=
harddog_release
,
};
static
struct
miscdevice
harddog_miscdev
=
{
minor:
WATCHDOG_MINOR
,
name:
"watchdog"
,
fops:
&
harddog_fops
,
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
harddog_fops
,
};
static
char
banner
[]
__initdata
=
KERN_INFO
"UML Watchdog Timer
\n
"
;
...
...
arch/um/drivers/hostaudio_kern.c
View file @
7b9870d9
...
...
@@ -195,23 +195,23 @@ static int hostmixer_release(struct inode *inode, struct file *file)
/* kernel module operations */
static
struct
file_operations
hostaudio_fops
=
{
owner:
THIS_MODULE
,
llseek:
no_llseek
,
read:
hostaudio_read
,
write:
hostaudio_write
,
poll:
hostaudio_poll
,
ioctl:
hostaudio_ioctl
,
mmap:
NULL
,
open:
hostaudio_open
,
release:
hostaudio_release
,
.
owner
=
THIS_MODULE
,
.
llseek
=
no_llseek
,
.
read
=
hostaudio_read
,
.
write
=
hostaudio_write
,
.
poll
=
hostaudio_poll
,
.
ioctl
=
hostaudio_ioctl
,
.
mmap
=
NULL
,
.
open
=
hostaudio_open
,
.
release
=
hostaudio_release
,
};
static
struct
file_operations
hostmixer_fops
=
{
owner:
THIS_MODULE
,
llseek:
no_llseek
,
ioctl:
hostmixer_ioctl_mixdev
,
open:
hostmixer_open_mixdev
,
release:
hostmixer_release
,
.
owner
=
THIS_MODULE
,
.
llseek
=
no_llseek
,
.
ioctl
=
hostmixer_ioctl_mixdev
,
.
open
=
hostmixer_open_mixdev
,
.
release
=
hostmixer_release
,
};
struct
{
...
...
arch/um/drivers/line.c
View file @
7b9870d9
...
...
@@ -511,11 +511,11 @@ void register_winch_irq(int fd, int tty_fd, int pid, void *line)
printk
(
"register_winch_irq - kmalloc failed
\n
"
);
goto
out
;
}
*
winch
=
((
struct
winch
)
{
list
:
LIST_HEAD_INIT
(
winch
->
list
),
fd
:
fd
,
tty_fd
:
tty_fd
,
pid
:
pid
,
line
:
line
});
*
winch
=
((
struct
winch
)
{
.
list
=
LIST_HEAD_INIT
(
winch
->
list
),
.
fd
=
fd
,
.
tty_fd
=
tty_fd
,
.
pid
=
pid
,
.
line
=
line
});
list_add
(
&
winch
->
list
,
&
winch_handlers
);
if
(
um_request_irq
(
WINCH_IRQ
,
fd
,
IRQ_READ
,
winch_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
...
...
arch/um/drivers/mcast_kern.c
View file @
7b9870d9
...
...
@@ -36,11 +36,11 @@ void mcast_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
dpri
=
(
struct
mcast_data
*
)
pri
->
user
;
*
dpri
=
((
struct
mcast_data
)
{
addr
:
init
->
addr
,
port
:
init
->
port
,
ttl
:
init
->
ttl
,
mcast_addr
:
NULL
,
dev
:
dev
});
{
.
addr
=
init
->
addr
,
.
port
=
init
->
port
,
.
ttl
=
init
->
ttl
,
.
mcast_addr
=
NULL
,
.
dev
=
dev
});
printk
(
"mcast backend "
);
printk
(
"multicast adddress: %s:%u, TTL:%u "
,
dpri
->
addr
,
dpri
->
port
,
dpri
->
ttl
);
...
...
@@ -64,10 +64,10 @@ static int mcast_write(int fd, struct sk_buff **skb,
}
static
struct
net_kern_info
mcast_kern_info
=
{
init:
mcast_init
,
protocol:
eth_protocol
,
read:
mcast_read
,
write:
mcast_write
,
.
init
=
mcast_init
,
.
protocol
=
eth_protocol
,
.
read
=
mcast_read
,
.
write
=
mcast_write
,
};
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
;
*
init
=
((
struct
mcast_init
)
{
addr
:
"239.192.168.1"
,
port
:
1102
,
ttl
:
1
});
{
.
addr
=
"239.192.168.1"
,
.
port
=
1102
,
.
ttl
=
1
});
remain
=
split_if_spec
(
str
,
mac_out
,
&
init
->
addr
,
&
port_str
,
&
ttl_str
,
NULL
);
...
...
@@ -116,13 +116,13 @@ int mcast_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
mcast_transport
=
{
list
:
LIST_HEAD_INIT
(
mcast_transport
.
list
),
name
:
"mcast"
,
setup
:
mcast_setup
,
user
:
&
mcast_user_info
,
kern
:
&
mcast_kern_info
,
private_size
:
sizeof
(
struct
mcast_data
),
setup_size
:
sizeof
(
struct
mcast_init
),
.
list
=
LIST_HEAD_INIT
(
mcast_transport
.
list
),
.
name
=
"mcast"
,
.
setup
=
mcast_setup
,
.
user
=
&
mcast_user_info
,
.
kern
=
&
mcast_kern_info
,
.
private_size
=
sizeof
(
struct
mcast_data
),
.
setup_size
=
sizeof
(
struct
mcast_init
),
};
static
int
register_mcast
(
void
)
...
...
arch/um/drivers/mcast_user.c
View file @
7b9870d9
...
...
@@ -153,14 +153,14 @@ static int mcast_set_mtu(int mtu, void *data)
}
struct
net_user_info
mcast_user_info
=
{
init:
mcast_user_init
,
open:
mcast_open
,
close:
mcast_close
,
remove:
NULL
,
set_mtu:
mcast_set_mtu
,
add_address:
NULL
,
delete_address:
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
init
=
mcast_user_init
,
.
open
=
mcast_open
,
.
close
=
mcast_close
,
.
remove
=
NULL
,
.
set_mtu
=
mcast_set_mtu
,
.
add_address
=
NULL
,
.
delete_address
=
NULL
,
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
/*
...
...
arch/um/drivers/mconsole_kern.c
View file @
7b9870d9
...
...
@@ -36,8 +36,8 @@ static int do_unlink_socket(struct notifier_block *notifier,
static
struct
notifier_block
reboot_notifier
=
{
notifier_call:
do_unlink_socket
,
priority:
0
,
.
notifier_call
=
do_unlink_socket
,
.
priority
=
0
,
};
/* 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,
}
static struct notifier_block panic_exit_notifier = {
notifier_call :
notify_panic,
next :
NULL,
priority :
1
.notifier_call =
notify_panic,
.next =
NULL,
.priority =
1
};
static int add_notifier(void)
...
...
arch/um/drivers/mmapper_kern.c
View file @
7b9870d9
...
...
@@ -106,13 +106,13 @@ mmapper_release(struct inode *inode, struct file *file)
}
static
struct
file_operations
mmapper_fops
=
{
owner:
THIS_MODULE
,
read:
mmapper_read
,
write:
mmapper_write
,
ioctl:
mmapper_ioctl
,
mmap:
mmapper_mmap
,
open:
mmapper_open
,
release:
mmapper_release
,
.
owner
=
THIS_MODULE
,
.
read
=
mmapper_read
,
.
write
=
mmapper_write
,
.
ioctl
=
mmapper_ioctl
,
.
mmap
=
mmapper_mmap
,
.
open
=
mmapper_open
,
.
release
=
mmapper_release
,
};
static
int
__init
mmapper_init
(
void
)
...
...
arch/um/drivers/net_kern.c
View file @
7b9870d9
...
...
@@ -368,22 +368,22 @@ static int eth_configure(int n, void *init, char *mac,
*/
save
=
lp
->
user
[
0
];
*
lp
=
((
struct
uml_net_private
)
{
list
:
LIST_HEAD_INIT
(
lp
->
list
),
lock
:
SPIN_LOCK_UNLOCKED
,
dev
:
dev
,
fd
:
-
1
,
mac
:
{
0xfe
,
0xfd
,
0x0
,
0x0
,
0x0
,
0x0
},
have_mac
:
device
->
have_mac
,
protocol
:
transport
->
kern
->
protocol
,
open
:
transport
->
user
->
open
,
close
:
transport
->
user
->
close
,
remove
:
transport
->
user
->
remove
,
read
:
transport
->
kern
->
read
,
write
:
transport
->
kern
->
write
,
add_address
:
transport
->
user
->
add_address
,
delete_address
:
transport
->
user
->
delete_address
,
set_mtu
:
transport
->
user
->
set_mtu
,
user
:
{
save
}
});
{
.
list
=
LIST_HEAD_INIT
(
lp
->
list
),
.
lock
=
SPIN_LOCK_UNLOCKED
,
.
dev
=
dev
,
.
fd
=
-
1
,
.
mac
=
{
0xfe
,
0xfd
,
0x0
,
0x0
,
0x0
,
0x0
},
.
have_mac
=
device
->
have_mac
,
.
protocol
=
transport
->
kern
->
protocol
,
.
open
=
transport
->
user
->
open
,
.
close
=
transport
->
user
->
close
,
.
remove
=
transport
->
user
->
remove
,
.
read
=
transport
->
kern
->
read
,
.
write
=
transport
->
kern
->
write
,
.
add_address
=
transport
->
user
->
add_address
,
.
delete_address
=
transport
->
user
->
delete_address
,
.
set_mtu
=
transport
->
user
->
set_mtu
,
.
user
=
{
save
}
});
init_timer
(
&
lp
->
tl
);
lp
->
tl
.
function
=
uml_net_user_timer_expire
;
memset
(
&
lp
->
stats
,
0
,
sizeof
(
lp
->
stats
));
...
...
@@ -542,9 +542,9 @@ static int eth_setup(char *str)
printk
(
"eth_init : alloc_bootmem failed
\n
"
);
return
(
1
);
}
*
new
=
((
struct
eth_init
)
{
list
:
LIST_HEAD_INIT
(
new
->
list
),
index
:
n
,
init
:
str
});
*
new
=
((
struct
eth_init
)
{
.
list
=
LIST_HEAD_INIT
(
new
->
list
),
.
index
=
n
,
.
init
=
str
});
list_add_tail
(
&
new
->
list
,
&
eth_cmd_line
);
return
(
1
);
}
...
...
@@ -618,9 +618,10 @@ static int net_remove(char *str)
}
static
struct
mc_device
net_mc
=
{
name:
"eth"
,
config:
net_config
,
remove:
net_remove
,
.
name
=
"eth"
,
.
config
=
net_config
,
.
get_config
=
NULL
,
.
remove
=
net_remove
,
};
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
=
{
notifier_call:
uml_inetaddr_event
,
.
notifier_call
=
uml_inetaddr_event
,
};
static
int
uml_net_init
(
void
)
...
...
arch/um/drivers/null.c
View file @
7b9870d9
...
...
@@ -32,16 +32,16 @@ void null_free(void *data)
}
struct
chan_ops
null_ops
=
{
type:
"null"
,
init:
null_init
,
open:
null_open
,
close:
generic_close
,
read:
null_read
,
write:
generic_write
,
console_write:
generic_console_write
,
window_size:
generic_window_size
,
free:
null_free
,
winch:
0
,
.
type
=
"null"
,
.
init
=
null_init
,
.
open
=
null_open
,
.
close
=
generic_close
,
.
read
=
null_read
,
.
write
=
generic_write
,
.
console_write
=
generic_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
null_free
,
.
winch
=
0
,
};
/*
...
...
arch/um/drivers/pcap_kern.c
View file @
7b9870d9
...
...
@@ -27,12 +27,12 @@ void pcap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
ppri
=
(
struct
pcap_data
*
)
pri
->
user
;
*
ppri
=
((
struct
pcap_data
)
{
host_if
:
init
->
host_if
,
promisc
:
init
->
promisc
,
optimize
:
init
->
optimize
,
filter
:
init
->
filter
,
compiled
:
NULL
,
pcap
:
NULL
});
{
.
host_if
=
init
->
host_if
,
.
promisc
=
init
->
promisc
,
.
optimize
=
init
->
optimize
,
.
filter
=
init
->
filter
,
.
compiled
=
NULL
,
.
pcap
=
NULL
});
}
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)
}
static
struct
net_kern_info
pcap_kern_info
=
{
init:
pcap_init
,
protocol:
eth_protocol
,
read:
pcap_read
,
write:
pcap_write
,
.
init
=
pcap_init
,
.
protocol
=
eth_protocol
,
.
read
=
pcap_read
,
.
write
=
pcap_write
,
};
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
;
*
init
=
((
struct
pcap_init
)
{
host_if
:
"eth0"
,
promisc
:
1
,
optimize
:
0
,
filter
:
NULL
});
{
.
host_if
=
"eth0"
,
.
promisc
=
1
,
.
optimize
=
0
,
.
filter
=
NULL
});
remain
=
split_if_spec
(
str
,
&
host_if
,
&
init
->
filter
,
&
options
[
0
],
&
options
[
1
],
NULL
);
...
...
@@ -98,13 +98,13 @@ int pcap_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
pcap_transport
=
{
list
:
LIST_HEAD_INIT
(
pcap_transport
.
list
),
name
:
"pcap"
,
setup
:
pcap_setup
,
user
:
&
pcap_user_info
,
kern
:
&
pcap_kern_info
,
private_size
:
sizeof
(
struct
pcap_data
),
setup_size
:
sizeof
(
struct
pcap_init
),
.
list
=
LIST_HEAD_INIT
(
pcap_transport
.
list
),
.
name
=
"pcap"
,
.
setup
=
pcap_setup
,
.
user
=
&
pcap_user_info
,
.
kern
=
&
pcap_kern_info
,
.
private_size
=
sizeof
(
struct
pcap_data
),
.
setup_size
=
sizeof
(
struct
pcap_init
),
};
static
int
register_pcap
(
void
)
...
...
arch/um/drivers/pcap_user.c
View file @
7b9870d9
...
...
@@ -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
)
{
struct
pcap_handler_data
hdata
=
((
struct
pcap_handler_data
)
{
buffer
:
buffer
,
len
:
len
});
{
.
buffer
=
buffer
,
.
len
=
len
});
int
n
;
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)
}
struct
net_user_info
pcap_user_info
=
{
init:
pcap_user_init
,
open:
pcap_open
,
close:
NULL
,
remove:
pcap_remove
,
set_mtu:
NULL
,
add_address:
NULL
,
delete_address:
NULL
,
max_packet:
MAX_PACKET
-
ETH_HEADER_OTHER
.
init
=
pcap_user_init
,
.
open
=
pcap_open
,
.
close
=
NULL
,
.
remove
=
pcap_remove
,
.
set_mtu
=
NULL
,
.
add_address
=
NULL
,
.
delete_address
=
NULL
,
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_OTHER
};
/*
...
...
arch/um/drivers/port_kern.c
View file @
7b9870d9
...
...
@@ -32,8 +32,8 @@ struct port_list {
struct
port_dev
{
struct
port_list
*
port
;
int
fd
;
int
helper_pid
;
int
telnetd_pid
;
int
helper_pid
;
int
telnetd_pid
;
};
struct
connection
{
...
...
@@ -50,7 +50,7 @@ static void pipe_interrupt(int irq, void *data, struct pt_regs *regs)
struct
connection
*
conn
=
data
;
int
fd
;
fd
=
os_rcv_fd
(
conn
->
socket
[
0
],
&
conn
->
helper_pid
);
fd
=
os_rcv_fd
(
conn
->
socket
[
0
],
&
conn
->
helper_pid
);
if
(
fd
<
0
){
if
(
fd
==
-
EAGAIN
)
return
;
...
...
@@ -85,11 +85,11 @@ static int port_accept(struct port_list *port)
goto
out_close
;
}
*
conn
=
((
struct
connection
)
{
list
:
LIST_HEAD_INIT
(
conn
->
list
),
fd
:
fd
,
socket
:
{
socket
[
0
],
socket
[
1
]
},
telnetd_pid
:
pid
,
port
:
port
});
{
.
list
=
LIST_HEAD_INIT
(
conn
->
list
),
.
fd
=
fd
,
.
socket
=
{
socket
[
0
],
socket
[
1
]
},
.
telnetd_pid
=
pid
,
.
port
=
port
});
if
(
um_request_irq
(
TELNETD_IRQ
,
socket
[
0
],
IRQ_READ
,
pipe_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
...
...
@@ -99,7 +99,8 @@ static int port_accept(struct port_list *port)
}
list_add
(
&
conn
->
list
,
&
port
->
pending
);
return
(
1
);
ret
=
1
;
goto
out
;
out_free:
kfree
(
conn
);
...
...
@@ -173,14 +174,15 @@ void *port_data(int port_num)
}
*
port
=
((
struct
port_list
)
{
list
:
LIST_HEAD_INIT
(
port
->
list
),
has_connection
:
0
,
sem
:
__SEMAPHORE_INITIALIZER
(
port
->
sem
,
0
),
lock
:
SPIN_LOCK_UNLOCKED
,
port
:
port_num
,
fd
:
fd
,
pending
:
LIST_HEAD_INIT
(
port
->
pending
),
connections
:
LIST_HEAD_INIT
(
port
->
connections
)
});
{
.
list
=
LIST_HEAD_INIT
(
port
->
list
),
.
has_connection
=
0
,
.
sem
=
__SEMAPHORE_INITIALIZER
(
port
->
sem
,
0
),
.
lock
=
SPIN_LOCK_UNLOCKED
,
.
port
=
port_num
,
.
fd
=
fd
,
.
pending
=
LIST_HEAD_INIT
(
port
->
pending
),
.
connections
=
LIST_HEAD_INIT
(
port
->
connections
)
});
list_add
(
&
port
->
list
,
&
ports
);
found:
...
...
@@ -190,9 +192,9 @@ void *port_data(int port_num)
goto
out
;
}
*
dev
=
((
struct
port_dev
)
{
port
:
port
,
fd
:
-
1
,
helper_pid
:
-
1
});
*
dev
=
((
struct
port_dev
)
{
.
port
=
port
,
.
helper_pid
=
-
1
,
.
telnetd_pid
=
-
1
});
goto
out
;
out_free:
...
...
@@ -274,8 +276,6 @@ void port_kern_free(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
);
kfree
(
dev
);
}
...
...
arch/um/drivers/pty.c
View file @
7b9870d9
...
...
@@ -27,9 +27,9 @@ void *pty_chan_init(char *str, int device, struct chan_opts *opts)
struct
pty_chan
*
data
;
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
pty_chan
)
{
announce
:
opts
->
announce
,
dev
:
device
,
raw
:
opts
->
raw
});
*
data
=
((
struct
pty_chan
)
{
.
announce
=
opts
->
announce
,
.
dev
=
device
,
.
raw
=
opts
->
raw
});
return
(
data
);
}
...
...
@@ -130,29 +130,29 @@ int pty_console_write(int fd, const char *buf, int n, void *d)
}
struct
chan_ops
pty_ops
=
{
type:
"pty"
,
init:
pty_chan_init
,
open:
pty_open
,
close:
generic_close
,
read:
generic_read
,
write:
generic_write
,
console_write:
pty_console_write
,
window_size:
generic_window_size
,
free:
generic_free
,
winch:
0
,
.
type
=
"pty"
,
.
init
=
pty_chan_init
,
.
open
=
pty_open
,
.
close
=
generic_close
,
.
read
=
generic_read
,
.
write
=
generic_write
,
.
console_write
=
pty_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
generic_free
,
.
winch
=
0
,
};
struct
chan_ops
pts_ops
=
{
type:
"pts"
,
init:
pty_chan_init
,
open:
pts_open
,
close:
generic_close
,
read:
generic_read
,
write:
generic_write
,
console_write:
pty_console_write
,
window_size:
generic_window_size
,
free:
generic_free
,
winch:
0
,
.
type
=
"pts"
,
.
init
=
pty_chan_init
,
.
open
=
pts_open
,
.
close
=
generic_close
,
.
read
=
generic_read
,
.
write
=
generic_write
,
.
console_write
=
pty_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
generic_free
,
.
winch
=
0
,
};
/*
...
...
arch/um/drivers/slip_kern.c
View file @
7b9870d9
...
...
@@ -22,15 +22,15 @@ void slip_init(struct net_device *dev, void *data)
private
=
dev
->
priv
;
spri
=
(
struct
slip_data
*
)
private
->
user
;
*
spri
=
((
struct
slip_data
)
{
name
:
{
'\0'
},
addr:
NULL
,
gate_addr
:
init
->
gate_addr
,
slave
:
-
1
,
ibuf
:
{
'\0'
},
obuf
:
{
'\0'
},
pos
:
0
,
esc
:
0
,
dev
:
dev
});
{
.
name
=
{
'\0'
},
.
addr
=
NULL
,
.
gate_addr
=
init
->
gate_addr
,
.
slave
=
-
1
,
.
ibuf
=
{
'\0'
},
.
obuf
=
{
'\0'
},
.
pos
=
0
,
.
esc
=
0
,
.
dev
=
dev
});
dev
->
init
=
NULL
;
dev
->
hard_header_len
=
0
;
...
...
@@ -61,10 +61,10 @@ static int slip_write(int fd, struct sk_buff **skb,
}
struct
net_kern_info
slip_kern_info
=
{
init:
slip_init
,
protocol:
slip_protocol
,
read:
slip_read
,
write:
slip_write
,
.
init
=
slip_init
,
.
protocol
=
slip_protocol
,
.
read
=
slip_read
,
.
write
=
slip_write
,
};
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
;
*
init
=
((
struct
slip_init
)
{
gate_addr
:
NULL
});
{
.
gate_addr
=
NULL
});
if
(
str
[
0
]
!=
'\0'
)
init
->
gate_addr
=
str
;
...
...
@@ -80,13 +80,13 @@ static int slip_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
slip_transport
=
{
list
:
LIST_HEAD_INIT
(
slip_transport
.
list
),
name
:
"slip"
,
setup
:
slip_setup
,
user
:
&
slip_user_info
,
kern
:
&
slip_kern_info
,
private_size
:
sizeof
(
struct
slip_data
),
setup_size
:
sizeof
(
struct
slip_init
),
.
list
=
LIST_HEAD_INIT
(
slip_transport
.
list
),
.
name
=
"slip"
,
.
setup
=
slip_setup
,
.
user
=
&
slip_user_info
,
.
kern
=
&
slip_kern_info
,
.
private_size
=
sizeof
(
struct
slip_data
),
.
setup_size
=
sizeof
(
struct
slip_init
),
};
static
int
register_slip
(
void
)
...
...
arch/um/drivers/slip_user.c
View file @
7b9870d9
...
...
@@ -257,14 +257,14 @@ static void slip_del_addr(unsigned char *addr, unsigned char *netmask,
}
struct
net_user_info
slip_user_info
=
{
init:
slip_user_init
,
open:
slip_open
,
close:
slip_close
,
remove:
NULL
,
set_mtu:
slip_set_mtu
,
add_address:
slip_add_addr
,
delete_address:
slip_del_addr
,
max_packet:
BUF_SIZE
.
init
=
slip_user_init
,
.
open
=
slip_open
,
.
close
=
slip_close
,
.
remove
=
NULL
,
.
set_mtu
=
slip_set_mtu
,
.
add_address
=
slip_add_addr
,
.
delete_address
=
slip_del_addr
,
.
max_packet
=
BUF_SIZE
};
/*
...
...
arch/um/drivers/slirp_kern.c
View file @
7b9870d9
...
...
@@ -22,14 +22,14 @@ void slirp_init(struct net_device *dev, void *data)
private
=
dev
->
priv
;
spri
=
(
struct
slirp_data
*
)
private
->
user
;
*
spri
=
((
struct
slirp_data
)
{
argw
:
init
->
argw
,
pid
:
-
1
,
slave
:
-
1
,
ibuf
:
{
'\0'
},
obuf
:
{
'\0'
},
pos
:
0
,
esc
:
0
,
dev
:
dev
});
{
.
argw
=
init
->
argw
,
.
pid
=
-
1
,
.
slave
=
-
1
,
.
ibuf
=
{
'\0'
},
.
obuf
=
{
'\0'
},
.
pos
=
0
,
.
esc
=
0
,
.
dev
=
dev
});
dev
->
init
=
NULL
;
dev
->
hard_header_len
=
0
;
...
...
@@ -64,10 +64,10 @@ static int slirp_write(int fd, struct sk_buff **skb,
}
struct
net_kern_info
slirp_kern_info
=
{
init:
slirp_init
,
protocol:
slirp_protocol
,
read:
slirp_read
,
write:
slirp_write
,
.
init
=
slirp_init
,
.
protocol
=
slirp_protocol
,
.
read
=
slirp_read
,
.
write
=
slirp_write
,
};
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
=
{
list
:
LIST_HEAD_INIT
(
slirp_transport
.
list
),
name
:
"slirp"
,
setup
:
slirp_setup
,
user
:
&
slirp_user_info
,
kern
:
&
slirp_kern_info
,
private_size
:
sizeof
(
struct
slirp_data
),
setup_size
:
sizeof
(
struct
slirp_init
),
.
list
=
LIST_HEAD_INIT
(
slirp_transport
.
list
),
.
name
=
"slirp"
,
.
setup
=
slirp_setup
,
.
user
=
&
slirp_user_info
,
.
kern
=
&
slirp_kern_info
,
.
private_size
=
sizeof
(
struct
slirp_data
),
.
setup_size
=
sizeof
(
struct
slirp_init
),
};
static
int
register_slirp
(
void
)
...
...
arch/um/drivers/slirp_user.c
View file @
7b9870d9
...
...
@@ -180,14 +180,14 @@ static int slirp_set_mtu(int mtu, void *data)
}
struct
net_user_info
slirp_user_info
=
{
init:
slirp_user_init
,
open:
slirp_open
,
close:
slirp_close
,
remove:
NULL
,
set_mtu:
slirp_set_mtu
,
add_address:
NULL
,
delete_address:
NULL
,
max_packet:
BUF_SIZE
.
init
=
slirp_user_init
,
.
open
=
slirp_open
,
.
close
=
slirp_close
,
.
remove
=
NULL
,
.
set_mtu
=
slirp_set_mtu
,
.
add_address
=
NULL
,
.
delete_address
=
NULL
,
.
max_packet
=
BUF_SIZE
};
/*
...
...
arch/um/drivers/ssl.c
View file @
7b9870d9
...
...
@@ -41,11 +41,11 @@ void ssl_announce(char *dev_name, int dev)
}
static
struct
chan_opts
opts
=
{
announce:
ssl_announce
,
xterm_title:
"Serial Line #%d"
,
raw:
1
,
tramp_stack
:
0
,
in_kernel
:
1
,
.
announce
=
ssl_announce
,
.
xterm_title
=
"Serial Line #%d"
,
.
raw
=
1
,
.
tramp_stack
=
0
,
.
in_kernel
=
1
,
};
static
int
ssl_config
(
char
*
str
);
...
...
@@ -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
struct
line_driver
driver
=
{
name
:
"UML serial line"
,
devfs_name
:
"tts/%d"
,
major
:
TTYAUX_MAJOR
,
minor_start
:
64
,
type
:
TTY_DRIVER_TYPE_SERIAL
,
subtype
:
0
,
read_irq
:
SSL_IRQ
,
read_irq_name
:
"ssl"
,
write_irq
:
SSL_WRITE_IRQ
,
write_irq_name
:
"ssl-write"
,
symlink_from
:
"serial"
,
symlink_to
:
"tts"
,
mc
:
{
name
:
"ssl"
,
config
:
ssl_config
,
get_config
:
ssl_get_config
,
remove
:
ssl_remove
,
.
name
=
"UML serial line"
,
.
devfs_name
=
"tts/%d"
,
.
major
=
TTYAUX_MAJOR
,
.
minor_start
=
64
,
.
type
=
TTY_DRIVER_TYPE_SERIAL
,
.
subtype
=
0
,
.
read_irq
=
SSL_IRQ
,
.
read_irq_name
=
"ssl"
,
.
write_irq
=
SSL_WRITE_IRQ
,
.
write_irq_name
=
"ssl-write"
,
.
symlink_from
=
"serial"
,
.
symlink_to
=
"tts"
,
.
mc
=
{
.
name
=
"ssl"
,
.
config
=
ssl_config
,
.
get_config
=
ssl_get_config
,
.
remove
=
ssl_remove
,
},
};
...
...
@@ -191,21 +191,21 @@ void ssl_hangup(struct tty_struct *tty)
}
static
struct
tty_driver
ssl_driver
=
{
refcount
:
&
ssl_refcount
,
open
:
ssl_open
,
close
:
ssl_close
,
write
:
ssl_write
,
put_char
:
ssl_put_char
,
flush_chars
:
ssl_flush_chars
,
chars_in_buffer
:
ssl_chars_in_buffer
,
flush_buffer
:
ssl_flush_buffer
,
ioctl
:
ssl_ioctl
,
throttle
:
ssl_throttle
,
unthrottle
:
ssl_unthrottle
,
set_termios
:
ssl_set_termios
,
stop
:
ssl_stop
,
start
:
ssl_start
,
hangup
:
ssl_hangup
.
refcount
=
&
ssl_refcount
,
.
open
=
ssl_open
,
.
close
=
ssl_close
,
.
write
=
ssl_write
,
.
put_char
=
ssl_put_char
,
.
flush_chars
=
ssl_flush_chars
,
.
chars_in_buffer
=
ssl_chars_in_buffer
,
.
flush_buffer
=
ssl_flush_buffer
,
.
ioctl
=
ssl_ioctl
,
.
throttle
=
ssl_throttle
,
.
unthrottle
=
ssl_unthrottle
,
.
set_termios
=
ssl_set_termios
,
.
stop
=
ssl_stop
,
.
start
=
ssl_start
,
.
hangup
=
ssl_hangup
};
/* Changed by ssl_init and referenced by ssl_exit, which are both serialized
...
...
arch/um/drivers/stdio_console.c
View file @
7b9870d9
...
...
@@ -42,28 +42,28 @@ static struct tty_driver console_driver;
static
int
console_refcount
=
0
;
static
struct
chan_ops
init_console_ops
=
{
type:
"you shouldn't see this"
,
init
:
NULL
,
open
:
NULL
,
close
:
NULL
,
read
:
NULL
,
write
:
NULL
,
console_write
:
generic_write
,
window_size
:
NULL
,
free
:
NULL
,
winch:
0
,
.
type
=
"you shouldn't see this"
,
.
init
=
NULL
,
.
open
=
NULL
,
.
close
=
NULL
,
.
read
=
NULL
,
.
write
=
NULL
,
.
console_write
=
generic_write
,
.
window_size
=
NULL
,
.
free
=
NULL
,
.
winch
=
0
,
};
static
struct
chan
init_console_chan
=
{
list
:
{
},
primary
:
1
,
input
:
0
,
output
:
1
,
opened
:
1
,
fd
:
1
,
pri
:
INIT_STATIC
,
ops
:
&
init_console_ops
,
data
:
NULL
.
list
=
{
},
.
primary
=
1
,
.
input
=
0
,
.
output
=
1
,
.
opened
=
1
,
.
fd
=
1
,
.
pri
=
INIT_STATIC
,
.
ops
=
&
init_console_ops
,
.
data
=
NULL
};
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
=
{
announce:
stdio_announce
,
xterm_title:
"Virtual Console #%d"
,
raw:
1
,
tramp_stack
:
0
,
in_kernel
:
1
,
.
announce
=
stdio_announce
,
.
xterm_title
=
"Virtual Console #%d"
,
.
raw
=
1
,
.
tramp_stack
=
0
,
.
in_kernel
=
1
,
};
static
int
con_config
(
char
*
str
);
...
...
@@ -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
struct
line_driver
driver
=
{
name
:
"UML console"
,
devfs_name
:
"vc/%d"
,
major
:
TTY_MAJOR
,
minor_start
:
0
,
type
:
TTY_DRIVER_TYPE_CONSOLE
,
subtype
:
SYSTEM_TYPE_CONSOLE
,
read_irq
:
CONSOLE_IRQ
,
read_irq_name
:
"console"
,
write_irq
:
CONSOLE_WRITE_IRQ
,
write_irq_name
:
"console-write"
,
symlink_from
:
"ttys"
,
symlink_to
:
"vc"
,
mc
:
{
name
:
"con"
,
config
:
con_config
,
get_config
:
con_get_config
,
remove
:
con_remove
,
.
name
=
"UML console"
,
.
devfs_name
=
"vc/%d"
,
.
major
=
TTY_MAJOR
,
.
minor_start
=
0
,
.
type
=
TTY_DRIVER_TYPE_CONSOLE
,
.
subtype
=
SYSTEM_TYPE_CONSOLE
,
.
read_irq
=
CONSOLE_IRQ
,
.
read_irq_name
=
"console"
,
.
write_irq
=
CONSOLE_WRITE_IRQ
,
.
write_irq_name
=
"console-write"
,
.
symlink_from
=
"ttys"
,
.
symlink_to
=
"vc"
,
.
mc
=
{
.
name
=
"con"
,
.
config
=
con_config
,
.
get_config
=
con_get_config
,
.
remove
=
con_remove
,
},
};
...
...
@@ -192,12 +192,12 @@ static void console_write(struct console *console, const char *string,
}
static
struct
tty_driver
console_driver
=
{
refcount
:
&
console_refcount
,
open
:
con_open
,
close
:
con_close
,
write
:
con_write
,
chars_in_buffer
:
chars_in_buffer
,
set_termios
:
set_termios
.
refcount
=
&
console_refcount
,
.
open
=
con_open
,
.
close
=
con_close
,
.
write
=
con_write
,
.
chars_in_buffer
=
chars_in_buffer
,
.
set_termios
=
set_termios
};
static
kdev_t
console_device
(
struct
console
*
c
)
...
...
arch/um/drivers/tty.c
View file @
7b9870d9
...
...
@@ -32,8 +32,8 @@ void *tty_chan_init(char *str, int device, struct chan_opts *opts)
if
((
data
=
um_kmalloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
tty_chan
)
{
dev
:
str
,
raw
:
opts
->
raw
});
*
data
=
((
struct
tty_chan
)
{
.
dev
=
str
,
.
raw
=
opts
->
raw
});
return
(
data
);
}
...
...
@@ -62,16 +62,16 @@ int tty_console_write(int fd, const char *buf, int n, void *d)
}
struct
chan_ops
tty_ops
=
{
type:
"tty"
,
init:
tty_chan_init
,
open:
tty_open
,
close:
generic_close
,
read:
generic_read
,
write:
generic_write
,
console_write:
tty_console_write
,
window_size:
generic_window_size
,
free:
generic_free
,
winch:
0
,
.
type
=
"tty"
,
.
init
=
tty_chan_init
,
.
open
=
tty_open
,
.
close
=
generic_close
,
.
read
=
generic_read
,
.
write
=
generic_write
,
.
console_write
=
tty_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
generic_free
,
.
winch
=
0
,
};
/*
...
...
arch/um/drivers/ubd_kern.c
View file @
7b9870d9
...
...
@@ -892,9 +892,9 @@ static int ubd_ioctl(struct inode * inode, struct file * file,
struct
ubd
*
dev
=
inode
->
i_bdev
->
bd_disk
->
private_data
;
int
err
;
struct
hd_driveid
ubd_id
=
{
.
cyls
=
0
,
.
heads
=
128
,
.
sectors
=
32
,
.
cyls
=
0
,
.
heads
=
128
,
.
sectors
=
32
,
};
switch
(
cmd
)
{
...
...
arch/um/drivers/xterm.c
View file @
7b9870d9
...
...
@@ -37,13 +37,13 @@ void *xterm_init(char *str, int device, struct chan_opts *opts)
struct
xterm_chan
*
data
;
if
((
data
=
malloc
(
sizeof
(
*
data
)))
==
NULL
)
return
(
NULL
);
*
data
=
((
struct
xterm_chan
)
{
pid
:
-
1
,
helper_pid
:
-
1
,
device
:
device
,
title
:
opts
->
xterm_title
,
raw
:
opts
->
raw
,
stack
:
opts
->
tramp_stack
,
direct_rcv
:
!
opts
->
in_kernel
}
);
*
data
=
((
struct
xterm_chan
)
{
.
pid
=
-
1
,
.
helper_pid
=
-
1
,
.
device
=
device
,
.
title
=
opts
->
xterm_title
,
.
raw
=
opts
->
raw
,
.
stack
=
opts
->
tramp_stack
,
.
direct_rcv
=
!
opts
->
in_kernel
}
);
return
(
data
);
}
...
...
@@ -172,16 +172,16 @@ int xterm_console_write(int fd, const char *buf, int n, void *d)
}
struct
chan_ops
xterm_ops
=
{
type:
"xterm"
,
init:
xterm_init
,
open:
xterm_open
,
close:
xterm_close
,
read:
generic_read
,
write:
generic_write
,
console_write:
xterm_console_write
,
window_size:
generic_window_size
,
free:
xterm_free
,
winch:
1
,
.
type
=
"xterm"
,
.
init
=
xterm_init
,
.
open
=
xterm_open
,
.
close
=
xterm_close
,
.
read
=
generic_read
,
.
write
=
generic_write
,
.
console_write
=
xterm_console_write
,
.
window_size
=
generic_window_size
,
.
free
=
xterm_free
,
.
winch
=
1
,
};
/*
...
...
arch/um/drivers/xterm_kern.c
View file @
7b9870d9
...
...
@@ -39,21 +39,21 @@ int xterm_fd(int socket, int *pid_out)
data
=
kmalloc
(
sizeof
(
*
data
),
GFP_KERNEL
);
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
);
}
*
data
=
((
struct
xterm_wait
)
{
sem
:
__SEMAPHORE_INITIALIZER
(
data
->
sem
,
0
),
fd
:
socket
,
pid
:
-
1
,
new_fd
:
-
1
});
{
.
sem
=
__SEMAPHORE_INITIALIZER
(
data
->
sem
,
0
),
.
fd
=
socket
,
.
pid
=
-
1
,
.
new_fd
=
-
1
});
err
=
um_request_irq
(
XTERM_IRQ
,
socket
,
IRQ_READ
,
xterm_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
"xterm"
,
data
);
if
(
err
){
printk
(
KERN_ERR
"
Failed to get IRQ for xterm, err = %d
\n
"
,
err
);
printk
(
KERN_ERR
"
xterm_fd : failed to get IRQ for xterm, "
"err = %d
\n
"
,
err
);
return
(
err
);
}
down
(
&
data
->
sem
);
...
...
arch/um/kernel/init_task.c
View file @
7b9870d9
...
...
@@ -3,6 +3,7 @@
* Licensed under the GPL
*/
#include "linux/config.h"
#include "linux/mm.h"
#include "linux/sched.h"
#include "linux/init_task.h"
...
...
@@ -37,17 +38,16 @@ union thread_union init_thread_union
__attribute__
((
__section__
(
".data.init_task"
)))
=
{
INIT_THREAD_INFO
(
init_task
)
};
struct
task_struct
*
alloc_task_struct
(
void
){
struct
task_struct
*
task
;
task
=
(
struct
task_struct
*
)
__get_free_pages
(
GFP_KERNEL
,
2
);
if
(
task
==
NULL
)
return
(
NULL
);
return
(
task
);
struct
task_struct
*
alloc_task_struct
(
void
)
{
return
((
struct
task_struct
*
)
__get_free_pages
(
GFP_KERNEL
,
CONFIG_KERNEL_STACK_ORDER
));
}
void
unprotect_stack
(
unsigned
long
stack
)
{
protect_memory
(
stack
,
4
*
PAGE_SIZE
,
1
,
1
,
0
,
1
);
protect_memory
(
stack
,
(
1
<<
CONFIG_KERNEL_STACK_ORDER
)
*
PAGE_SIZE
,
1
,
1
,
0
,
1
);
}
void
free_task_struct
(
struct
task_struct
*
task
)
...
...
@@ -55,7 +55,7 @@ void free_task_struct(struct task_struct *task)
/* free_pages decrements the page counter and only actually frees
* the pages if they are now not accessed by anything.
*/
free_pages
((
unsigned
long
)
task
,
2
);
free_pages
((
unsigned
long
)
task
,
CONFIG_KERNEL_STACK_ORDER
);
}
/*
...
...
arch/um/kernel/irq_user.c
View file @
7b9870d9
...
...
@@ -128,15 +128,15 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
if
(
type
==
IRQ_READ
)
events
=
POLLIN
|
POLLPRI
;
else
events
=
POLLOUT
;
*
new_fd
=
((
struct
irq_fd
)
{
next
:
NULL
,
id
:
dev_id
,
fd
:
fd
,
type
:
type
,
irq
:
irq
,
pid
:
pid
,
events
:
events
,
current_events:
0
,
freed
:
0
}
);
*
new_fd
=
((
struct
irq_fd
)
{
.
next
=
NULL
,
.
id
=
dev_id
,
.
fd
=
fd
,
.
type
=
type
,
.
irq
=
irq
,
.
pid
=
pid
,
.
events
=
events
,
.
current_events
=
0
,
.
freed
=
0
}
);
/* Critical section - locked by a spinlock because this stuff can
* 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)
if
(
type
==
IRQ_WRITE
)
fd
=
-
1
;
pollfds
[
pollfds_num
]
=
((
struct
pollfd
)
{
fd
:
fd
,
events
:
events
,
revents
:
0
});
pollfds
[
pollfds_num
]
=
((
struct
pollfd
)
{
.
fd
=
fd
,
.
events
=
events
,
.
revents
=
0
});
pollfds_num
++
;
*
last_irq_ptr
=
new_fd
;
...
...
@@ -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
)
{
struct
irq_and_dev
data
=
((
struct
irq_and_dev
)
{
irq
:
irq
,
dev
:
dev
});
struct
irq_and_dev
data
=
((
struct
irq_and_dev
)
{
.
irq
=
irq
,
.
dev
=
dev
});
free_irq_by_cb
(
same_irq_and_dev
,
&
data
);
}
...
...
arch/um/kernel/mem.c
View file @
7b9870d9
...
...
@@ -231,11 +231,11 @@ static int setup_one_range(int fd, char *driver, unsigned long start,
panic
(
"Failed to allocating mem_region"
);
}
*
region
=
((
struct
mem_region
)
{
driver
:
driver
,
start_pfn
:
pfn
,
start
:
start
,
len
:
len
,
fd
:
fd
}
);
*
region
=
((
struct
mem_region
)
{
.
driver
=
driver
,
.
start_pfn
=
pfn
,
.
start
=
start
,
.
len
=
len
,
.
fd
=
fd
}
);
regions
[
i
]
=
region
;
out:
up
(
&
regions_sem
);
...
...
@@ -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
struct
vm_reserved
head
=
{
list
:
LIST_HEAD_INIT
(
head
.
list
),
start
:
0
,
end
:
0xffffffff
.
list
=
LIST_HEAD_INIT
(
head
.
list
),
.
start
=
0
,
.
end
=
0xffffffff
};
static
struct
vm_reserved
tail
=
{
list
:
LIST_HEAD_INIT
(
tail
.
list
),
start
:
0
,
end
:
0xffffffff
.
list
=
LIST_HEAD_INIT
(
tail
.
list
),
.
start
=
0
,
.
end
=
0xffffffff
};
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)
goto
out
;
}
*
entry
=
((
struct
vm_reserved
)
{
list
:
LIST_HEAD_INIT
(
entry
->
list
),
start
:
start
,
end
:
end
});
{
.
list
=
LIST_HEAD_INIT
(
entry
->
list
),
.
start
=
start
,
.
end
=
end
});
list_add
(
&
entry
->
list
,
&
prev
->
list
);
err
=
0
;
out:
...
...
@@ -539,9 +539,9 @@ struct iomem {
*/
struct
iomem
iomem_regions
[
NREGIONS
]
=
{
[
0
...
NREGIONS
-
1
]
=
{
name
:
NULL
,
fd
:
-
1
,
size
:
0
}
};
{
.
name
=
NULL
,
.
fd
=
-
1
,
.
size
=
0
}
};
int
num_iomem_regions
=
0
;
...
...
@@ -551,9 +551,9 @@ void add_iomem(char *name, int fd, unsigned long size)
return
;
size
=
(
size
+
PAGE_SIZE
-
1
)
&
PAGE_MASK
;
iomem_regions
[
num_iomem_regions
++
]
=
((
struct
iomem
)
{
name
:
name
,
fd
:
fd
,
size
:
size
}
);
((
struct
iomem
)
{
.
name
=
name
,
.
fd
=
fd
,
.
size
=
size
}
);
}
int
setup_iomem
(
void
)
...
...
arch/um/kernel/process.c
View file @
7b9870d9
...
...
@@ -38,16 +38,17 @@
#include "choose-mode.h"
#include "mode.h"
#ifdef CONFIG_MODE_SKAS
#include "skas_ptrace.h"
#include "skas.h"
#include "skas_ptrace.h"
#endif
void
init_new_thread_stack
(
void
*
sig_stack
,
void
(
*
usr1_handler
)(
int
))
{
int
flags
=
0
;
int
flags
=
0
,
pages
;
if
(
sig_stack
!=
NULL
){
set_sigstack
(
sig_stack
,
2
*
page_size
());
pages
=
(
1
<<
CONFIG_KERNEL_STACK_ORDER
)
-
2
;
set_sigstack
(
sig_stack
,
pages
*
page_size
());
flags
=
SA_ONSTACK
;
}
if
(
usr1_handler
)
set_handler
(
SIGUSR1
,
usr1_handler
,
flags
,
-
1
);
...
...
arch/um/kernel/process_kern.c
View file @
7b9870d9
...
...
@@ -306,7 +306,11 @@ EXPORT_SYMBOL(not_implemented);
int
user_context
(
unsigned
long
sp
)
{
return
((
sp
&
(
PAGE_MASK
<<
1
))
!=
current
->
thread
.
kernel_stack
);
unsigned
long
stack
;
stack
=
sp
&
(
PAGE_MASK
<<
CONFIG_KERNEL_STACK_ORDER
);
stack
+=
2
*
PAGE_SIZE
;
return
(
stack
!=
current
->
thread
.
kernel_stack
);
}
extern
void
remove_umid_dir
(
void
);
...
...
arch/um/kernel/sigio_user.c
View file @
7b9870d9
...
...
@@ -52,7 +52,7 @@ void __init check_one_sigio(void (*proc)(int, int))
{
struct
sigaction
old
,
new
;
struct
termios
tt
;
struct
openpty_arg
pty
=
{
master
:
-
1
,
slave
:
-
1
};
struct
openpty_arg
pty
=
{
.
master
=
-
1
,
.
slave
=
-
1
};
int
master
,
slave
,
flags
;
initial_thread_cb
(
openpty_cb
,
&
pty
);
...
...
@@ -170,15 +170,15 @@ struct pollfds {
* synchronizes with it.
*/
struct
pollfds
current_poll
=
{
poll
:
NULL
,
size
:
0
,
used
:
0
.
poll
=
NULL
,
.
size
=
0
,
.
used
=
0
};
struct
pollfds
next_poll
=
{
poll
:
NULL
,
size
:
0
,
used
:
0
.
poll
=
NULL
,
.
size
=
0
,
.
used
=
0
};
static
int
write_sigio_thread
(
void
*
unused
)
...
...
@@ -298,9 +298,9 @@ int add_sigio_fd(int fd, int read)
if
(
read
)
events
=
POLLIN
;
else
events
=
POLLOUT
;
next_poll
.
poll
[
n
-
1
]
=
((
struct
pollfd
)
{
fd
:
fd
,
events
:
events
,
revents
:
0
});
next_poll
.
poll
[
n
-
1
]
=
((
struct
pollfd
)
{
.
fd
=
fd
,
.
events
=
events
,
.
revents
=
0
});
update_thread
();
out:
sigio_unlock
();
...
...
@@ -348,12 +348,12 @@ static int setup_initial_poll(int fd)
printk
(
"setup_initial_poll : failed to allocate poll
\n
"
);
return
(
-
1
);
}
*
p
=
((
struct
pollfd
)
{
fd
:
fd
,
events
:
POLLIN
,
revents
:
0
});
current_poll
=
((
struct
pollfds
)
{
poll
:
p
,
used
:
1
,
size
:
1
});
*
p
=
((
struct
pollfd
)
{
.
fd
=
fd
,
.
events
=
POLLIN
,
.
revents
=
0
});
current_poll
=
((
struct
pollfds
)
{
.
poll
=
p
,
.
used
=
1
,
.
size
=
1
});
return
(
0
);
}
...
...
arch/um/kernel/tt/gdb.c
View file @
7b9870d9
...
...
@@ -62,11 +62,11 @@ static void gdb_announce(char *dev_name, int dev)
}
static
struct
chan_opts
opts
=
{
announce
:
gdb_announce
,
xterm_title
:
"UML kernel debugger"
,
raw
:
0
,
tramp_stack
:
0
,
in_kernel
:
0
,
.
announce
=
gdb_announce
,
.
xterm_title
=
"UML kernel debugger"
,
.
raw
=
0
,
.
tramp_stack
=
0
,
.
in_kernel
=
0
,
};
/* Accessed by the tracing thread, which automatically serializes access */
...
...
arch/um/kernel/tt/process_kern.c
View file @
7b9870d9
...
...
@@ -367,11 +367,14 @@ __uml_setup("jail", jail_setup,
static
void
mprotect_kernel_mem
(
int
w
)
{
unsigned
long
start
,
end
;
int
pages
;
if
(
!
jail
||
(
current
==
&
init_task
))
return
;
pages
=
(
1
<<
CONFIG_KERNEL_STACK_ORDER
);
start
=
(
unsigned
long
)
current
->
thread_info
+
PAGE_SIZE
;
end
=
(
unsigned
long
)
current
->
thread_info
+
PAGE_SIZE
*
4
;
end
=
(
unsigned
long
)
current
+
PAGE_SIZE
*
pages
;
protect_memory
(
uml_reserved
,
start
-
uml_reserved
,
1
,
w
,
1
,
1
);
protect_memory
(
end
,
high_physmem
-
end
,
1
,
w
,
1
,
1
);
...
...
@@ -470,8 +473,10 @@ void clear_singlestep(void *t)
int
start_uml_tt
(
void
)
{
void
*
sp
;
int
pages
;
sp
=
(
void
*
)
init_task
.
thread
.
kernel_stack
+
2
*
PAGE_SIZE
-
pages
=
(
1
<<
CONFIG_KERNEL_STACK_ORDER
)
-
2
;
sp
=
(
void
*
)
init_task
.
thread
.
kernel_stack
+
pages
*
PAGE_SIZE
-
sizeof
(
unsigned
long
);
return
(
tracer
(
start_kernel_proc
,
sp
));
}
...
...
arch/um/kernel/tt/ptproxy/proxy.c
View file @
7b9870d9
...
...
@@ -129,14 +129,14 @@ static int parent_syscall(debugger_state *debugger, int pid);
int
init_parent_proxy
(
int
pid
)
{
parent
=
((
debugger_state
)
{
pid
:
pid
,
wait_options
:
0
,
wait_status_ptr
:
NULL
,
waiting
:
0
,
real_wait
:
0
,
expecting_child
:
0
,
handle_trace
:
parent_syscall
,
debugee
:
NULL
}
);
parent
=
((
debugger_state
)
{
.
pid
=
pid
,
.
wait_options
=
0
,
.
wait_status_ptr
=
NULL
,
.
waiting
=
0
,
.
real_wait
=
0
,
.
expecting_child
=
0
,
.
handle_trace
=
parent_syscall
,
.
debugee
=
NULL
}
);
return
(
0
);
}
...
...
arch/um/kernel/um_arch.c
View file @
7b9870d9
...
...
@@ -85,10 +85,10 @@ static void c_stop(struct seq_file *m, void *v)
}
struct
seq_operations
cpuinfo_op
=
{
start:
c_start
,
next:
c_next
,
stop:
c_stop
,
show:
show_cpuinfo
,
.
start
=
c_start
,
.
next
=
c_next
,
.
stop
=
c_stop
,
.
show
=
show_cpuinfo
,
};
pte_t
*
__bad_pagetable
(
void
)
...
...
@@ -361,9 +361,9 @@ static int panic_exit(struct notifier_block *self, unsigned long unused1,
}
static
struct
notifier_block
panic_exit_notifier
=
{
notifier_call
:
panic_exit
,
next
:
NULL
,
priority
:
0
.
notifier_call
=
panic_exit
,
.
next
=
NULL
,
.
priority
=
0
};
void
__init
setup_arch
(
char
**
cmdline_p
)
...
...
arch/um/kernel/user_util.c
View file @
7b9870d9
...
...
@@ -29,6 +29,7 @@
#include "mem_user.h"
#include "init.h"
#include "helper.h"
#include "uml-config.h"
#define COMMAND_LINE_SIZE _POSIX_ARG_MAX
...
...
@@ -88,12 +89,15 @@ void task_protections(unsigned long address)
{
unsigned
long
guard
=
address
+
page_size
();
unsigned
long
stack
=
guard
+
page_size
();
int
prot
=
0
;
int
prot
=
0
,
pages
;
#ifdef notdef
if
(
mprotect
((
void
*
)
stack
,
page_size
(),
prot
)
<
0
)
panic
(
"protecting guard page failed, errno = %d"
,
errno
);
#endif
pages
=
(
1
<<
CONFIG_KERNEL_STACK_ORDER
)
-
2
;
prot
=
PROT_READ
|
PROT_WRITE
|
PROT_EXEC
;
if
(
mprotect
((
void
*
)
stack
,
2
*
page_size
(),
prot
)
<
0
)
if
(
mprotect
((
void
*
)
stack
,
pages
*
page_size
(),
prot
)
<
0
)
panic
(
"protecting stack failed, errno = %d"
,
errno
);
}
...
...
arch/um/os-Linux/drivers/ethertap_kern.c
View file @
7b9870d9
...
...
@@ -28,11 +28,11 @@ static void etap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
epri
=
(
struct
ethertap_data
*
)
pri
->
user
;
*
epri
=
((
struct
ethertap_data
)
{
dev_name
:
init
->
dev_name
,
gate_addr
:
init
->
gate_addr
,
data_fd
:
-
1
,
control_fd
:
-
1
,
dev
:
dev
});
{
.
dev_name
=
init
->
dev_name
,
.
gate_addr
=
init
->
gate_addr
,
.
data_fd
=
-
1
,
.
control_fd
=
-
1
,
.
dev
=
dev
});
printk
(
"ethertap backend - %s"
,
epri
->
dev_name
);
if
(
epri
->
gate_addr
!=
NULL
)
...
...
@@ -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
=
{
init:
etap_init
,
protocol:
eth_protocol
,
read:
etap_read
,
write:
etap_write
,
.
init
=
etap_init
,
.
protocol
=
eth_protocol
,
.
read
=
etap_read
,
.
write
=
etap_write
,
};
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
;
*
init
=
((
struct
ethertap_init
)
{
dev_name
:
NULL
,
gate_addr
:
NULL
});
{
.
dev_name
=
NULL
,
.
gate_addr
=
NULL
});
if
(
tap_setup_common
(
str
,
"ethertap"
,
&
init
->
dev_name
,
mac_out
,
&
init
->
gate_addr
))
return
(
0
);
...
...
@@ -94,12 +94,12 @@ int ethertap_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
ethertap_transport
=
{
list
:
LIST_HEAD_INIT
(
ethertap_transport
.
list
),
name
:
"ethertap"
,
setup
:
ethertap_setup
,
user
:
&
ethertap_user_info
,
kern
:
&
ethertap_kern_info
,
private_size
:
sizeof
(
struct
ethertap_data
),
.
list
=
LIST_HEAD_INIT
(
ethertap_transport
.
list
),
.
name
=
"ethertap"
,
.
setup
=
ethertap_setup
,
.
user
=
&
ethertap_user_info
,
.
kern
=
&
ethertap_kern_info
,
.
private_size
=
sizeof
(
struct
ethertap_data
),
};
static
int
register_ethertap
(
void
)
...
...
arch/um/os-Linux/drivers/ethertap_user.c
View file @
7b9870d9
...
...
@@ -216,14 +216,14 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask,
}
struct
net_user_info
ethertap_user_info
=
{
init:
etap_user_init
,
open:
etap_open
,
close:
etap_close
,
remove:
NULL
,
set_mtu:
etap_set_mtu
,
add_address:
etap_add_addr
,
delete_address:
etap_del_addr
,
max_packet:
MAX_PACKET
-
ETH_HEADER_ETHERTAP
.
init
=
etap_user_init
,
.
open
=
etap_open
,
.
close
=
etap_close
,
.
remove
=
NULL
,
.
set_mtu
=
etap_set_mtu
,
.
add_address
=
etap_add_addr
,
.
delete_address
=
etap_del_addr
,
.
max_packet
=
MAX_PACKET
-
ETH_HEADER_ETHERTAP
};
/*
...
...
arch/um/os-Linux/drivers/tuntap_kern.c
View file @
7b9870d9
...
...
@@ -28,11 +28,11 @@ static void tuntap_init(struct net_device *dev, void *data)
pri
=
dev
->
priv
;
tpri
=
(
struct
tuntap_data
*
)
pri
->
user
;
*
tpri
=
((
struct
tuntap_data
)
{
dev_name
:
init
->
dev_name
,
fixed_config
:
(
init
->
dev_name
!=
NULL
),
gate_addr
:
init
->
gate_addr
,
fd
:
-
1
,
dev
:
dev
});
{
.
dev_name
=
init
->
dev_name
,
.
fixed_config
=
(
init
->
dev_name
!=
NULL
),
.
gate_addr
=
init
->
gate_addr
,
.
fd
=
-
1
,
.
dev
=
dev
});
printk
(
"TUN/TAP backend - "
);
if
(
tpri
->
gate_addr
!=
NULL
)
printk
(
"IP = %s"
,
tpri
->
gate_addr
);
...
...
@@ -55,10 +55,10 @@ static int tuntap_write(int fd, struct sk_buff **skb,
}
struct
net_kern_info
tuntap_kern_info
=
{
init:
tuntap_init
,
protocol:
eth_protocol
,
read:
tuntap_read
,
write:
tuntap_write
,
.
init
=
tuntap_init
,
.
protocol
=
eth_protocol
,
.
read
=
tuntap_read
,
.
write
=
tuntap_write
,
};
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
;
*
init
=
((
struct
tuntap_init
)
{
dev_name
:
NULL
,
gate_addr
:
NULL
});
{
.
dev_name
=
NULL
,
.
gate_addr
=
NULL
});
if
(
tap_setup_common
(
str
,
"tuntap"
,
&
init
->
dev_name
,
mac_out
,
&
init
->
gate_addr
))
return
(
0
);
...
...
@@ -76,13 +76,13 @@ int tuntap_setup(char *str, char **mac_out, void *data)
}
static
struct
transport
tuntap_transport
=
{
list
:
LIST_HEAD_INIT
(
tuntap_transport
.
list
),
name
:
"tuntap"
,
setup
:
tuntap_setup
,
user
:
&
tuntap_user_info
,
kern
:
&
tuntap_kern_info
,
private_size
:
sizeof
(
struct
tuntap_data
),
setup_size
:
sizeof
(
struct
tuntap_init
),
.
list
=
LIST_HEAD_INIT
(
tuntap_transport
.
list
),
.
name
=
"tuntap"
,
.
setup
=
tuntap_setup
,
.
user
=
&
tuntap_user_info
,
.
kern
=
&
tuntap_kern_info
,
.
private_size
=
sizeof
(
struct
tuntap_data
),
.
setup_size
=
sizeof
(
struct
tuntap_init
),
};
static
int
register_tuntap
(
void
)
...
...
arch/um/os-Linux/drivers/tuntap_user.c
View file @
7b9870d9
...
...
@@ -201,14 +201,14 @@ static int tuntap_set_mtu(int mtu, void *data)
}
struct
net_user_info
tuntap_user_info
=
{
init:
tuntap_user_init
,
open:
tuntap_open
,
close:
tuntap_close
,
remove:
NULL
,
set_mtu:
tuntap_set_mtu
,
add_address:
tuntap_add_addr
,
delete_address:
tuntap_del_addr
,
max_packet:
MAX_PACKET
.
init
=
tuntap_user_init
,
.
open
=
tuntap_open
,
.
close
=
tuntap_close
,
.
remove
=
NULL
,
.
set_mtu
=
tuntap_set_mtu
,
.
add_address
=
tuntap_add_addr
,
.
delete_address
=
tuntap_del_addr
,
.
max_packet
=
MAX_PACKET
};
/*
...
...
arch/um/os-Linux/file.c
View file @
7b9870d9
...
...
@@ -276,8 +276,8 @@ int os_rcv_fd(int fd, int *helper_pid_out)
msg
.
msg_name
=
NULL
;
msg
.
msg_namelen
=
0
;
iov
=
((
struct
iovec
)
{
iov_base
:
helper_pid_out
,
iov_len
:
sizeof
(
*
helper_pid_out
)
});
iov
=
((
struct
iovec
)
{
.
iov_base
=
helper_pid_out
,
.
iov_len
=
sizeof
(
*
helper_pid_out
)
});
msg
.
msg_iov
=
&
iov
;
msg
.
msg_iovlen
=
1
;
msg
.
msg_control
=
buf
;
...
...
include/asm-um/current.h
View file @
7b9870d9
...
...
@@ -13,7 +13,8 @@ struct thread_info;
#include "linux/config.h"
#include "asm/page.h"
#define CURRENT_THREAD(dummy) (((unsigned long) &dummy) & (PAGE_MASK << 2))
#define CURRENT_THREAD(dummy) (((unsigned long) &dummy) & \
(PAGE_MASK << CONFIG_KERNEL_STACK_ORDER))
#define current ({ int dummy; \
((struct thread_info *) CURRENT_THREAD(dummy))->task; })
...
...
include/asm-um/processor-generic.h
View file @
7b9870d9
...
...
@@ -80,21 +80,21 @@ struct thread_struct {
#define INIT_THREAD \
{ \
forking:
0, \
kernel_stack:
0, \
nsyscalls:
0, \
regs:
EMPTY_REGS, \
cr2:
0, \
err:
0, \
fault_addr:
NULL, \
prev_sched:
NULL, \
temp_stack:
0, \
exec_buf:
NULL, \
arch:
INIT_ARCH_THREAD, \
request:
{ 0 } \
.forking =
0, \
.kernel_stack =
0, \
.nsyscalls =
0, \
.regs =
EMPTY_REGS, \
.cr2 =
0, \
.err =
0, \
.fault_addr =
NULL, \
.prev_sched =
NULL, \
.temp_stack =
0, \
.exec_buf =
NULL, \
.arch =
INIT_ARCH_THREAD, \
.request =
{ 0 } \
}
#define INIT_THREAD_SIZE (
4
* PAGE_SIZE)
#define INIT_THREAD_SIZE (
(1 << CONFIG_KERNEL_STACK_ORDER)
* PAGE_SIZE)
typedef
struct
{
unsigned
long
seg
;
...
...
include/asm-um/processor-i386.h
View file @
7b9870d9
...
...
@@ -14,8 +14,8 @@ struct arch_thread {
int
debugregs_seq
;
};
#define INIT_ARCH_THREAD {
debugregs :
{ [ 0 ... 7 ] = 0 }, \
debugregs_seq :
0 }
#define INIT_ARCH_THREAD {
.debugregs =
{ [ 0 ... 7 ] = 0 }, \
.debugregs_seq =
0 }
#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