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
c219ba69
Commit
c219ba69
authored
Feb 05, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://jdike.stearns.org:5000/stack-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
3aa4f0de
dd84991d
Changes
48
Hide whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
590 additions
and
565 deletions
+590
-565
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
+17
-16
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 @
c219ba69
...
...
@@ -168,6 +168,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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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
,
...
...
@@ -174,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:
...
...
@@ -191,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:
...
...
arch/um/drivers/pty.c
View file @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -38,16 +38,17 @@
#include "choose-mode.h"
#include "mode.h"
#ifdef UML_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
<<
UML_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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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
)
...
...
@@ -379,9 +379,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 @
c219ba69
...
...
@@ -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
<<
UML_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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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 @
c219ba69
...
...
@@ -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