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
3caef8d2
Commit
3caef8d2
authored
Apr 15, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linuxusb.bkbits.net/d
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
87d6f514
07f7a9e8
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
185 additions
and
31 deletions
+185
-31
drivers/base/Kconfig
drivers/base/Kconfig
+8
-8
drivers/base/class.c
drivers/base/class.c
+2
-4
drivers/char/dsp56k.c
drivers/char/dsp56k.c
+25
-2
drivers/char/ftape/zftape/zftape-init.c
drivers/char/ftape/zftape/zftape-init.c
+17
-0
drivers/char/istallion.c
drivers/char/istallion.c
+10
-1
drivers/char/stallion.c
drivers/char/stallion.c
+9
-1
drivers/char/tipar.c
drivers/char/tipar.c
+11
-5
drivers/char/tpqic02.c
drivers/char/tpqic02.c
+22
-0
drivers/char/vc_screen.c
drivers/char/vc_screen.c
+10
-0
drivers/char/vt.c
drivers/char/vt.c
+2
-1
drivers/isdn/capi/capi.c
drivers/isdn/capi/capi.c
+16
-1
drivers/video/fbmem.c
drivers/video/fbmem.c
+19
-0
fs/coda/psdev.c
fs/coda/psdev.c
+31
-5
lib/kobject.c
lib/kobject.c
+3
-3
No files found.
drivers/base/Kconfig
View file @
3caef8d2
...
...
@@ -9,14 +9,14 @@ config FW_LOADER
the kernel tree does.
config DEBUG_DRIVER
bool "Driver Core verbose debug messages"
depends on DEBUG_KERNEL
help
Say Y here if you want the Driver core to produce a bunch of
debug messages to the system log. Select this if you are having a
problem with the driver core and want to see more of what is
going on.
bool "Driver Core verbose debug messages"
depends on DEBUG_KERNEL
help
Say Y here if you want the Driver core to produce a bunch of
debug messages to the system log. Select this if you are having a
problem with the driver core and want to see more of what is
going on.
If you are unsure about this, say N here.
If you are unsure about this, say N here.
endmenu
drivers/base/class.c
View file @
3caef8d2
...
...
@@ -155,8 +155,7 @@ static int class_device_dev_link(struct class_device * class_dev)
static
void
class_device_dev_unlink
(
struct
class_device
*
class_dev
)
{
if
(
class_dev
->
dev
)
sysfs_remove_link
(
&
class_dev
->
kobj
,
"device"
);
sysfs_remove_link
(
&
class_dev
->
kobj
,
"device"
);
}
static
int
class_device_driver_link
(
struct
class_device
*
class_dev
)
...
...
@@ -169,8 +168,7 @@ static int class_device_driver_link(struct class_device * class_dev)
static
void
class_device_driver_unlink
(
struct
class_device
*
class_dev
)
{
if
((
class_dev
->
dev
)
&&
(
class_dev
->
dev
->
driver
))
sysfs_remove_link
(
&
class_dev
->
kobj
,
"driver"
);
sysfs_remove_link
(
&
class_dev
->
kobj
,
"driver"
);
}
...
...
drivers/char/dsp56k.c
View file @
3caef8d2
...
...
@@ -35,6 +35,7 @@
#include <linux/init.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/atarihw.h>
#include <asm/traps.h>
...
...
@@ -149,6 +150,8 @@ static struct dsp56k_device {
int
tx_wsize
,
rx_wsize
;
}
dsp56k
;
static
struct
class_simple
*
dsp56k_class
;
static
int
dsp56k_reset
(
void
)
{
u_char
status
;
...
...
@@ -502,6 +505,8 @@ static char banner[] __initdata = KERN_INFO "DSP56k driver installed\n";
static
int
__init
dsp56k_init_driver
(
void
)
{
int
err
=
0
;
if
(
!
MACH_IS_ATARI
||
!
ATARIHW_PRESENT
(
DSP56K
))
{
printk
(
"DSP56k driver: Hardware not present
\n
"
);
return
-
ENODEV
;
...
...
@@ -511,17 +516,35 @@ static int __init dsp56k_init_driver(void)
printk
(
"DSP56k driver: Unable to register driver
\n
"
);
return
-
ENODEV
;
}
dsp56k_class
=
class_simple_create
(
THIS_MODULE
,
"dsp56k"
);
if
(
IS_ERR
(
dsp56k_class
))
{
err
=
PTR_ERR
(
dsp56k_class
);
goto
out_chrdev
;
}
class_simple_device_add
(
dsp56k_class
,
MKDEV
(
DSP56K_MAJOR
,
0
),
NULL
,
"dsp56k"
);
devfs_mk_cdev
(
MKDEV
(
DSP56K_MAJOR
,
0
),
err
=
devfs_mk_cdev
(
MKDEV
(
DSP56K_MAJOR
,
0
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"dsp56k"
);
if
(
err
)
goto
out_class
;
printk
(
banner
);
return
0
;
goto
out
;
out_class:
class_simple_device_remove
(
MKDEV
(
DSP56K_MAJOR
,
0
));
class_simple_destroy
(
dsp56k_class
);
out_chrdev:
unregister_chrdev
(
DSP56K_MAJOR
,
"dsp56k"
);
out:
return
err
;
}
module_init
(
dsp56k_init_driver
);
static
void
__exit
dsp56k_cleanup_driver
(
void
)
{
class_simple_device_remove
(
MKDEV
(
DSP56K_MAJOR
,
0
));
class_simple_destroy
(
dsp56k_class
);
unregister_chrdev
(
DSP56K_MAJOR
,
"dsp56k"
);
devfs_remove
(
"dsp56k"
);
}
...
...
drivers/char/ftape/zftape/zftape-init.c
View file @
3caef8d2
...
...
@@ -38,6 +38,7 @@
#include <linux/zftape.h>
#include <linux/init.h>
#include <linux/device.h>
#include "../zftape/zftape-init.h"
#include "../zftape/zftape-read.h"
...
...
@@ -103,6 +104,8 @@ static struct file_operations zft_cdev =
.
release
=
zft_close
,
};
static
struct
class_simple
*
zft_class
;
/* Open floppy tape device
*/
static
int
zft_open
(
struct
inode
*
ino
,
struct
file
*
filep
)
...
...
@@ -341,22 +344,29 @@ KERN_INFO
"installing zftape VFS interface for ftape driver ..."
);
TRACE_CATCH
(
register_chrdev
(
QIC117_TAPE_MAJOR
,
"zft"
,
&
zft_cdev
),);
zft_class
=
class_simple_create
(
THIS_MODULE
,
"zft"
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
),
NULL
,
"qft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"qft%i"
,
i
);
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
4
),
NULL
,
"nqft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
4
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"nqft%i"
,
i
);
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
16
),
NULL
,
"zqft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
16
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"zqft%i"
,
i
);
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
20
),
NULL
,
"nzqft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
20
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"nzqft%i"
,
i
);
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
32
),
NULL
,
"rawqft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
32
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"rawqft%i"
,
i
);
class_simple_device_add
(
zft_class
,
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
36
),
NULL
,
"nrawrawqft%i"
,
i
);
devfs_mk_cdev
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
36
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"nrawqft%i"
,
i
);
...
...
@@ -386,12 +396,19 @@ static void zft_exit(void)
}
for
(
i
=
0
;
i
<
4
;
i
++
)
{
devfs_remove
(
"qft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
));
devfs_remove
(
"nqft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
4
));
devfs_remove
(
"zqft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
16
));
devfs_remove
(
"nzqft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
20
));
devfs_remove
(
"rawqft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
32
));
devfs_remove
(
"nrawqft%i"
,
i
);
class_simple_device_remove
(
MKDEV
(
QIC117_TAPE_MAJOR
,
i
+
36
));
}
class_simple_destroy
(
zft_class
);
zft_uninit_mem
();
/* release remaining memory, if any */
printk
(
KERN_INFO
"zftape successfully unloaded.
\n
"
);
TRACE_EXIT
;
...
...
drivers/char/istallion.c
View file @
3caef8d2
...
...
@@ -40,6 +40,7 @@
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/device.h>
#include <asm/io.h>
#include <asm/uaccess.h>
...
...
@@ -795,6 +796,8 @@ static int stli_timeron;
/*****************************************************************************/
static
struct
class_simple
*
istallion_class
;
#ifdef MODULE
/*
...
...
@@ -853,9 +856,12 @@ static void __exit istallion_module_exit(void)
return
;
}
put_tty_driver
(
stli_serial
);
for
(
i
=
0
;
i
<
4
;
i
++
)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
devfs_remove
(
"staliomem/%d"
,
i
);
class_simple_device_remove
(
MKDEV
(
STL_SIOMEMMAJOR
,
i
));
}
devfs_remove
(
"staliomem"
);
class_simple_destroy
(
istallion_class
);
if
((
i
=
unregister_chrdev
(
STL_SIOMEMMAJOR
,
"staliomem"
)))
printk
(
"STALLION: failed to un-register serial memory device, "
"errno=%d
\n
"
,
-
i
);
...
...
@@ -5310,10 +5316,13 @@ int __init stli_init(void)
"device
\n
"
);
devfs_mk_dir
(
"staliomem"
);
istallion_class
=
class_simple_create
(
THIS_MODULE
,
"staliomem"
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
devfs_mk_cdev
(
MKDEV
(
STL_SIOMEMMAJOR
,
i
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"staliomem/%d"
,
i
);
class_simple_device_add
(
istallion_class
,
MKDEV
(
STL_SIOMEMMAJOR
,
i
),
NULL
,
"staliomem%d"
,
i
);
}
/*
...
...
drivers/char/stallion.c
View file @
3caef8d2
...
...
@@ -41,6 +41,7 @@
#include <linux/init.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/device.h>
#include <asm/io.h>
#include <asm/uaccess.h>
...
...
@@ -732,6 +733,8 @@ static struct file_operations stl_fsiomem = {
/*****************************************************************************/
static
struct
class_simple
*
stallion_class
;
#ifdef MODULE
/*
...
...
@@ -788,12 +791,15 @@ static void __exit stallion_module_exit(void)
restore_flags
(
flags
);
return
;
}
for
(
i
=
0
;
i
<
4
;
i
++
)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
devfs_remove
(
"staliomem/%d"
,
i
);
class_simple_device_remove
(
MKDEV
(
STL_SIOMEMMAJOR
,
i
));
}
devfs_remove
(
"staliomem"
);
if
((
i
=
unregister_chrdev
(
STL_SIOMEMMAJOR
,
"staliomem"
)))
printk
(
"STALLION: failed to un-register serial memory device, "
"errno=%d
\n
"
,
-
i
);
class_simple_destroy
(
stallion_class
);
if
(
stl_tmpwritebuf
!=
(
char
*
)
NULL
)
kfree
(
stl_tmpwritebuf
);
...
...
@@ -3181,10 +3187,12 @@ int __init stl_init(void)
printk
(
"STALLION: failed to register serial board device
\n
"
);
devfs_mk_dir
(
"staliomem"
);
stallion_class
=
class_simple_create
(
THIS_MODULE
,
"staliomem"
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
devfs_mk_cdev
(
MKDEV
(
STL_SIOMEMMAJOR
,
i
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"staliomem/%d"
,
i
);
class_simple_device_add
(
stallion_class
,
MKDEV
(
STL_SIOMEMMAJOR
,
i
),
NULL
,
"staliomem%d"
,
i
);
}
stl_serial
->
owner
=
THIS_MODULE
;
...
...
drivers/char/tipar.c
View file @
3caef8d2
...
...
@@ -67,7 +67,7 @@
/*
* Version Information
*/
#define DRIVER_VERSION "1.1
7
"
#define DRIVER_VERSION "1.1
9
"
#define DRIVER_AUTHOR "Romain Lievin <roms@lpg.ticalc.org>"
#define DRIVER_DESC "Device driver for TI/PC parallel link cables"
#define DRIVER_LICENSE "GPL"
...
...
@@ -361,10 +361,13 @@ tipar_ioctl(struct inode *inode, struct file *file,
switch
(
cmd
)
{
case
IOCTL_TIPAR_DELAY
:
delay
=
(
int
)
arg
;
//get_user(delay, &arg);
break
;
delay
=
(
int
)
arg
;
//get_user(delay, &arg);
break
;
case
IOCTL_TIPAR_TIMEOUT
:
timeout
=
(
int
)
arg
;
//get_user(timeout, &arg);
if
(
arg
!=
0
)
timeout
=
(
int
)
arg
;
else
retval
=
-
EINVAL
;
break
;
default:
retval
=
-
ENOTTY
;
...
...
@@ -399,7 +402,10 @@ tipar_setup(char *str)
str
=
get_options
(
str
,
ARRAY_SIZE
(
ints
),
ints
);
if
(
ints
[
0
]
>
0
)
{
timeout
=
ints
[
1
];
if
(
ints
[
1
]
!=
0
)
timeout
=
ints
[
1
];
else
printk
(
"tipar: wrong timeout value (0), using default value instead."
);
if
(
ints
[
0
]
>
1
)
{
delay
=
ints
[
2
];
}
...
...
drivers/char/tpqic02.c
View file @
3caef8d2
...
...
@@ -94,6 +94,7 @@
#include <linux/init.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/device.h>
#include <asm/dma.h>
#include <asm/system.h>
...
...
@@ -229,6 +230,8 @@ static const char *format_names[] = {
"600"
/* untested. */
};
static
struct
class_simple
*
tpqic02_class
;
/* `exception_list' is needed for exception status reporting.
* Exceptions 1..14 are defined by QIC-02 rev F.
...
...
@@ -2696,23 +2699,32 @@ int __init qic02_tape_init(void)
return
-
ENODEV
;
}
tpqic02_class
=
class_simple_create
(
THIS_MODULE
,
TPQIC02_NAME
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
2
),
NULL
,
"ntpqic11"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
2
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"ntpqic11"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
3
),
NULL
,
"tpqic11"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
3
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"tpqic11"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
4
),
NULL
,
"ntpqic24"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
4
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"ntpqic24"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
5
),
NULL
,
"tpqic24"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
5
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"tpqic24"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
6
),
NULL
,
"ntpqic20"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
6
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"ntpqic120"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
7
),
NULL
,
"tpqic20"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
7
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"tpqic120"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
8
),
NULL
,
"ntpqic50"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
8
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"ntpqic150"
);
class_simple_device_add
(
tpqic02_class
,
MKDEV
(
QIC02_TAPE_MAJOR
,
9
),
NULL
,
"tpqic50"
);
devfs_mk_cdev
(
MKDEV
(
QIC02_TAPE_MAJOR
,
9
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
,
"tpqic150"
);
...
...
@@ -2757,13 +2769,23 @@ static void qic02_module_exit(void)
qic02_release_resources
();
devfs_remove
(
"ntpqic11"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
2
));
devfs_remove
(
"tpqic11"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
3
));
devfs_remove
(
"ntpqic24"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
4
));
devfs_remove
(
"tpqic24"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
5
));
devfs_remove
(
"ntpqic120"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
6
));
devfs_remove
(
"tpqic120"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
7
));
devfs_remove
(
"ntpqic150"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
8
));
devfs_remove
(
"tpqic150"
);
class_simple_device_remove
(
MKDEV
(
QIC02_TAPE_MAJOR
,
9
));
class_simple_destroy
(
tpqic02_class
);
}
static
int
qic02_module_init
(
void
)
...
...
drivers/char/vc_screen.c
View file @
3caef8d2
...
...
@@ -36,6 +36,7 @@
#include <linux/kbd_kern.h>
#include <linux/console.h>
#include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/uaccess.h>
#include <asm/byteorder.h>
#include <asm/unaligned.h>
...
...
@@ -469,6 +470,8 @@ static struct file_operations vcs_fops = {
.
open
=
vcs_open
,
};
static
struct
class_simple
*
vc_class
;
void
vcs_make_devfs
(
struct
tty_struct
*
tty
)
{
devfs_mk_cdev
(
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
1
),
...
...
@@ -477,19 +480,26 @@ void vcs_make_devfs(struct tty_struct *tty)
devfs_mk_cdev
(
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
129
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"vcc/a%u"
,
tty
->
index
+
1
);
class_simple_device_add
(
vc_class
,
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
1
),
NULL
,
"vcs%u"
,
tty
->
index
+
1
);
class_simple_device_add
(
vc_class
,
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
129
),
NULL
,
"vcsa%u"
,
tty
->
index
+
1
);
}
void
vcs_remove_devfs
(
struct
tty_struct
*
tty
)
{
devfs_remove
(
"vcc/%u"
,
tty
->
index
+
1
);
devfs_remove
(
"vcc/a%u"
,
tty
->
index
+
1
);
class_simple_device_remove
(
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
1
));
class_simple_device_remove
(
MKDEV
(
VCS_MAJOR
,
tty
->
index
+
129
));
}
int
__init
vcs_init
(
void
)
{
if
(
register_chrdev
(
VCS_MAJOR
,
"vcs"
,
&
vcs_fops
))
panic
(
"unable to get major %d for vcs device"
,
VCS_MAJOR
);
vc_class
=
class_simple_create
(
THIS_MODULE
,
"vc"
);
devfs_mk_cdev
(
MKDEV
(
VCS_MAJOR
,
0
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"vcc/0"
);
devfs_mk_cdev
(
MKDEV
(
VCS_MAJOR
,
128
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"vcc/a0"
);
class_simple_device_add
(
vc_class
,
MKDEV
(
VCS_MAJOR
,
0
),
NULL
,
"vcs"
);
class_simple_device_add
(
vc_class
,
MKDEV
(
VCS_MAJOR
,
128
),
NULL
,
"vcsa"
);
return
0
;
}
drivers/char/vt.c
View file @
3caef8d2
...
...
@@ -2617,6 +2617,8 @@ static struct tty_operations con_ops = {
int
__init
vty_init
(
void
)
{
vcs_init
();
console_driver
=
alloc_tty_driver
(
MAX_NR_CONSOLES
);
if
(
!
console_driver
)
panic
(
"Couldn't allocate console driver
\n
"
);
...
...
@@ -2644,7 +2646,6 @@ int __init vty_init(void)
#ifdef CONFIG_FRAMEBUFFER_CONSOLE
fb_console_init
();
#endif
vcs_init
();
return
0
;
}
...
...
drivers/isdn/capi/capi.c
View file @
3caef8d2
...
...
@@ -37,6 +37,7 @@
#include <linux/capi.h>
#include <linux/kernelcapi.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/isdn/capiutil.h>
#include <linux/isdn/capicmd.h>
...
...
@@ -56,6 +57,8 @@ MODULE_LICENSE("GPL");
/* -------- driver information -------------------------------------- */
static
struct
class_simple
*
capi_class
;
int
capi_major
=
68
;
/* allocated */
#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
#define CAPINC_NR_PORTS 32
...
...
@@ -1313,7 +1316,8 @@ static int capinc_tty_init(void)
drv
->
owner
=
THIS_MODULE
;
drv
->
driver_name
=
"capi_nc"
;
drv
->
name
=
"capi/"
;
drv
->
devfs_name
=
"capi/"
;
drv
->
name
=
"capi"
;
drv
->
major
=
capi_ttymajor
;
drv
->
minor_start
=
0
;
drv
->
type
=
TTY_DRIVER_TYPE_SERIAL
;
...
...
@@ -1483,11 +1487,20 @@ static int __init capi_init(void)
return
-
EIO
;
}
capi_class
=
class_simple_create
(
THIS_MODULE
,
"capi"
);
if
(
IS_ERR
(
capi_class
))
{
unregister_chrdev
(
capi_major
,
"capi20"
);
return
PTR_ERR
(
capi_class
);
}
class_simple_device_add
(
capi_class
,
MKDEV
(
capi_major
,
0
),
NULL
,
"capi"
);
devfs_mk_cdev
(
MKDEV
(
capi_major
,
0
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"isdn/capi20"
);
#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
if
(
capinc_tty_init
()
<
0
)
{
class_simple_device_remove
(
MKDEV
(
capi_major
,
0
));
class_simple_destroy
(
capi_class
);
unregister_chrdev
(
capi_major
,
"capi20"
);
return
-
ENOMEM
;
}
...
...
@@ -1514,6 +1527,8 @@ static void __exit capi_exit(void)
{
proc_exit
();
class_simple_device_remove
(
MKDEV
(
capi_major
,
0
));
class_simple_destroy
(
capi_class
);
unregister_chrdev
(
capi_major
,
"capi20"
);
devfs_remove
(
"isdn/capi20"
);
...
...
drivers/video/fbmem.c
View file @
3caef8d2
...
...
@@ -32,6 +32,9 @@
#include <linux/kmod.h>
#endif
#include <linux/devfs_fs_kernel.h>
#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/device.h>
#if defined(__mc68000__) || defined(CONFIG_APUS)
#include <asm/setup.h>
...
...
@@ -1245,6 +1248,8 @@ static struct file_operations fb_fops = {
#endif
};
static
struct
class_simple
*
fb_class
;
/**
* register_framebuffer - registers a frame buffer device
* @fb_info: frame buffer info structure
...
...
@@ -1259,6 +1264,7 @@ int
register_framebuffer
(
struct
fb_info
*
fb_info
)
{
int
i
;
struct
class_device
*
c
;
if
(
num_registered_fb
==
FB_MAX
)
return
-
ENXIO
;
...
...
@@ -1267,6 +1273,12 @@ register_framebuffer(struct fb_info *fb_info)
if
(
!
registered_fb
[
i
])
break
;
fb_info
->
node
=
i
;
c
=
class_simple_device_add
(
fb_class
,
MKDEV
(
FB_MAJOR
,
i
),
NULL
,
"fb%d"
,
i
);
if
(
IS_ERR
(
c
))
{
/* Not fatal */
printk
(
KERN_WARNING
"Unable to create class_device for framebuffer %d; errno = %ld
\n
"
,
i
,
PTR_ERR
(
c
));
}
if
(
fb_info
->
pixmap
.
addr
==
NULL
)
{
fb_info
->
pixmap
.
addr
=
kmalloc
(
FBPIXMAPSIZE
,
GFP_KERNEL
);
...
...
@@ -1332,6 +1344,7 @@ unregister_framebuffer(struct fb_info *fb_info)
kfree
(
fb_info
->
sprite
.
addr
);
registered_fb
[
i
]
=
NULL
;
num_registered_fb
--
;
class_simple_device_remove
(
MKDEV
(
FB_MAJOR
,
i
));
return
0
;
}
...
...
@@ -1393,6 +1406,12 @@ fbmem_init(void)
if
(
register_chrdev
(
FB_MAJOR
,
"fb"
,
&
fb_fops
))
printk
(
"unable to get major %d for fb devs
\n
"
,
FB_MAJOR
);
fb_class
=
class_simple_create
(
THIS_MODULE
,
"graphics"
);
if
(
IS_ERR
(
fb_class
))
{
printk
(
KERN_WARNING
"Unable to create fb class; errno = %ld
\n
"
,
PTR_ERR
(
fb_class
));
fb_class
=
NULL
;
}
#ifdef CONFIG_FB_OF
if
(
ofonly
)
{
offb_init
();
...
...
fs/coda/psdev.c
View file @
3caef8d2
...
...
@@ -37,6 +37,7 @@
#include <linux/init.h>
#include <linux/list.h>
#include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/poll.h>
...
...
@@ -61,6 +62,7 @@ unsigned long coda_timeout = 30; /* .. secs, then signals will dequeue */
struct
venus_comm
coda_comms
[
MAX_CODADEVS
];
static
struct
class_simple
*
coda_psdev_class
;
/*
* Device operations
...
...
@@ -358,20 +360,38 @@ static struct file_operations coda_psdev_fops = {
static
int
init_coda_psdev
(
void
)
{
int
i
;
int
i
,
err
=
0
;
if
(
register_chrdev
(
CODA_PSDEV_MAJOR
,
"coda_psdev"
,
&
coda_psdev_fops
))
{
printk
(
KERN_ERR
"coda_psdev: unable to get major %d
\n
"
,
CODA_PSDEV_MAJOR
);
return
-
EIO
;
}
coda_psdev_class
=
class_simple_create
(
THIS_MODULE
,
"coda_psdev"
);
if
(
IS_ERR
(
coda_psdev_class
))
{
err
=
PTR_ERR
(
coda_psdev_class
);
goto
out_chrdev
;
}
devfs_mk_dir
(
"coda"
);
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
{
devfs_mk_cdev
(
MKDEV
(
CODA_PSDEV_MAJOR
,
i
),
class_simple_device_add
(
coda_psdev_class
,
MKDEV
(
CODA_PSDEV_MAJOR
,
i
),
NULL
,
"cfs%d"
,
i
);
err
=
devfs_mk_cdev
(
MKDEV
(
CODA_PSDEV_MAJOR
,
i
),
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
"coda/%d"
,
i
);
if
(
err
)
goto
out_class
;
}
coda_sysctl_init
();
return
0
;
goto
out
;
out_class:
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
class_simple_device_remove
(
MKDEV
(
CODA_PSDEV_MAJOR
,
i
));
class_simple_destroy
(
coda_psdev_class
);
out_chrdev:
unregister_chrdev
(
CODA_PSDEV_MAJOR
,
"coda_psdev"
);
out:
return
err
;
}
...
...
@@ -408,8 +428,11 @@ static int __init init_coda(void)
}
return
0
;
out:
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
{
class_simple_device_remove
(
MKDEV
(
CODA_PSDEV_MAJOR
,
i
));
devfs_remove
(
"coda/%d"
,
i
);
}
class_simple_destroy
(
coda_psdev_class
);
devfs_remove
(
"coda"
);
unregister_chrdev
(
CODA_PSDEV_MAJOR
,
"coda_psdev"
);
coda_sysctl_clean
();
...
...
@@ -427,8 +450,11 @@ static void __exit exit_coda(void)
if
(
err
!=
0
)
{
printk
(
"coda: failed to unregister filesystem
\n
"
);
}
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
for
(
i
=
0
;
i
<
MAX_CODADEVS
;
i
++
)
{
class_simple_device_remove
(
MKDEV
(
CODA_PSDEV_MAJOR
,
i
));
devfs_remove
(
"coda/%d"
,
i
);
}
class_simple_destroy
(
coda_psdev_class
);
devfs_remove
(
"coda"
);
unregister_chrdev
(
CODA_PSDEV_MAJOR
,
"coda_psdev"
);
coda_sysctl_clean
();
...
...
lib/kobject.c
View file @
3caef8d2
...
...
@@ -349,16 +349,16 @@ int kobject_set_name(struct kobject * kobj, const char * fmt, ...)
/*
* Need more space? Allocate it and try again
*/
name
=
kmalloc
(
need
,
GFP_KERNEL
);
limit
=
need
+
1
;
name
=
kmalloc
(
limit
,
GFP_KERNEL
);
if
(
!
name
)
{
error
=
-
ENOMEM
;
goto
Done
;
}
limit
=
need
;
need
=
vsnprintf
(
name
,
limit
,
fmt
,
args
);
/* Still? Give up. */
if
(
need
>
limit
)
{
if
(
need
>
=
limit
)
{
kfree
(
name
);
error
=
-
EFAULT
;
goto
Done
;
...
...
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