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
0e99284b
Commit
0e99284b
authored
May 12, 2002
by
Richard Gooch
Browse files
Options
Browse Files
Download
Plain Diff
Merge atnf.csiro.au:/workaholix1/kernel/v2.5/linus
into atnf.csiro.au:/workaholix1/kernel/v2.5/rgooch-2.5
parents
bdff23c1
2813027d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
39 deletions
+49
-39
Documentation/filesystems/devfs/ChangeLog
Documentation/filesystems/devfs/ChangeLog
+14
-0
drivers/char/misc.c
drivers/char/misc.c
+6
-5
fs/devfs/base.c
fs/devfs/base.c
+20
-25
fs/devfs/util.c
fs/devfs/util.c
+9
-9
No files found.
Documentation/filesystems/devfs/ChangeLog
View file @
0e99284b
...
@@ -1912,3 +1912,17 @@ Changes for patch v210
...
@@ -1912,3 +1912,17 @@ Changes for patch v210
Thanks to Anton Blanchard <anton@samba.org>
Thanks to Anton Blanchard <anton@samba.org>
- Updated README from master HTML file
- Updated README from master HTML file
===============================================================================
Changes for patch v211
- Do not put miscellaneous character devices in /dev/misc if they
specify their own directory (i.e. contain a '/' character)
- Copied macro for error messages from fs/devfs/base.c to
fs/devfs/util.c and made use of this macro
- Removed 2.4.x compatibility code from fs/devfs/base.c
===============================================================================
Changes for patch v212
- Added BKL to <devfs_open> because drivers still need it
drivers/char/misc.c
View file @
0e99284b
...
@@ -170,7 +170,7 @@ static struct file_operations misc_fops = {
...
@@ -170,7 +170,7 @@ static struct file_operations misc_fops = {
int
misc_register
(
struct
miscdevice
*
misc
)
int
misc_register
(
struct
miscdevice
*
misc
)
{
{
static
devfs_handle_t
devfs_handle
;
static
devfs_handle_t
devfs_handle
,
dir
;
struct
miscdevice
*
c
;
struct
miscdevice
*
c
;
if
(
misc
->
next
||
misc
->
prev
)
if
(
misc
->
next
||
misc
->
prev
)
...
@@ -201,11 +201,12 @@ int misc_register(struct miscdevice * misc)
...
@@ -201,11 +201,12 @@ int misc_register(struct miscdevice * misc)
misc_minors
[
misc
->
minor
>>
3
]
|=
1
<<
(
misc
->
minor
&
7
);
misc_minors
[
misc
->
minor
>>
3
]
|=
1
<<
(
misc
->
minor
&
7
);
if
(
!
devfs_handle
)
if
(
!
devfs_handle
)
devfs_handle
=
devfs_mk_dir
(
NULL
,
"misc"
,
NULL
);
devfs_handle
=
devfs_mk_dir
(
NULL
,
"misc"
,
NULL
);
dir
=
strchr
(
misc
->
name
,
'/'
)
?
NULL
:
devfs_handle
;
misc
->
devfs_handle
=
misc
->
devfs_handle
=
devfs_register
(
devfs_handle
,
misc
->
name
,
DEVFS_FL_NONE
,
devfs_register
(
dir
,
misc
->
name
,
DEVFS_FL_NONE
,
MISC_MAJOR
,
misc
->
minor
,
MISC_MAJOR
,
misc
->
minor
,
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
,
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
,
misc
->
fops
,
NULL
);
misc
->
fops
,
NULL
);
/*
/*
* Add it to the front, so that later devices can "override"
* Add it to the front, so that later devices can "override"
...
...
fs/devfs/base.c
View file @
0e99284b
...
@@ -620,6 +620,12 @@
...
@@ -620,6 +620,12 @@
unlock_kernel() due to recent VFS locking changes. BKL isn't
unlock_kernel() due to recent VFS locking changes. BKL isn't
required in devfs.
required in devfs.
v1.13
v1.13
20020428 Richard Gooch <rgooch@atnf.csiro.au>
Removed 2.4.x compatibility code.
v1.14
20020510 Richard Gooch <rgooch@atnf.csiro.au>
Added BKL to <devfs_open> because drivers still need it.
v1.15
*/
*/
#include <linux/types.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/errno.h>
...
@@ -652,7 +658,7 @@
...
@@ -652,7 +658,7 @@
#include <asm/bitops.h>
#include <asm/bitops.h>
#include <asm/atomic.h>
#include <asm/atomic.h>
#define DEVFS_VERSION "1.1
3 (20020406
)"
#define DEVFS_VERSION "1.1
5 (20020510
)"
#define DEVFS_NAME "devfs"
#define DEVFS_NAME "devfs"
...
@@ -1400,16 +1406,8 @@ static void free_dentry (struct devfs_entry *de)
...
@@ -1400,16 +1406,8 @@ static void free_dentry (struct devfs_entry *de)
static
int
is_devfsd_or_child
(
struct
fs_info
*
fs_info
)
static
int
is_devfsd_or_child
(
struct
fs_info
*
fs_info
)
{
{
struct
task_struct
*
p
;
if
(
current
==
fs_info
->
devfsd_task
)
return
(
TRUE
);
if
(
current
==
fs_info
->
devfsd_task
)
return
(
TRUE
);
if
(
current
->
pgrp
==
fs_info
->
devfsd_pgrp
)
return
(
TRUE
);
if
(
current
->
pgrp
==
fs_info
->
devfsd_pgrp
)
return
(
TRUE
);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,1)
for
(
p
=
current
->
p_opptr
;
p
!=
&
init_task
;
p
=
p
->
p_opptr
)
{
if
(
p
==
fs_info
->
devfsd_task
)
return
(
TRUE
);
}
#endif
return
(
FALSE
);
return
(
FALSE
);
}
/* End Function is_devfsd_or_child */
}
/* End Function is_devfsd_or_child */
...
@@ -1829,16 +1827,6 @@ devfs_handle_t devfs_mk_dir (devfs_handle_t dir, const char *name, void *info)
...
@@ -1829,16 +1827,6 @@ devfs_handle_t devfs_mk_dir (devfs_handle_t dir, const char *name, void *info)
de
->
info
=
info
;
de
->
info
=
info
;
if
(
(
err
=
_devfs_append_entry
(
dir
,
de
,
FALSE
,
&
old
)
)
!=
0
)
if
(
(
err
=
_devfs_append_entry
(
dir
,
de
,
FALSE
,
&
old
)
)
!=
0
)
{
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,1)
if
(
old
&&
S_ISDIR
(
old
->
mode
)
)
{
PRINTK
(
"(%s): using old entry in dir: %p
\"
%s
\"\n
"
,
name
,
dir
,
dir
->
name
);
old
->
vfs_deletable
=
FALSE
;
devfs_put
(
dir
);
return
old
;
}
#endif
PRINTK
(
"(%s): could not append to dir: %p
\"
%s
\"
, err: %d
\n
"
,
PRINTK
(
"(%s): could not append to dir: %p
\"
%s
\"
, err: %d
\n
"
,
name
,
dir
,
dir
->
name
,
err
);
name
,
dir
,
dir
->
name
,
err
);
devfs_put
(
old
);
devfs_put
(
old
);
...
@@ -2739,15 +2727,22 @@ static int devfs_open (struct inode *inode, struct file *file)
...
@@ -2739,15 +2727,22 @@ static int devfs_open (struct inode *inode, struct file *file)
{
{
file
->
f_op
=
&
def_blk_fops
;
file
->
f_op
=
&
def_blk_fops
;
if
(
df
->
ops
)
inode
->
i_bdev
->
bd_op
=
df
->
ops
;
if
(
df
->
ops
)
inode
->
i_bdev
->
bd_op
=
df
->
ops
;
err
=
def_blk_fops
.
open
(
inode
,
file
);
}
}
else
file
->
f_op
=
fops_get
(
(
struct
file_operations
*
)
df
->
ops
);
if
(
file
->
f_op
)
err
=
file
->
f_op
->
open
?
(
*
file
->
f_op
->
open
)
(
inode
,
file
)
:
0
;
else
else
{
{
/* Fallback to legacy scheme */
file
->
f_op
=
fops_get
(
(
struct
file_operations
*
)
df
->
ops
);
if
(
S_ISCHR
(
inode
->
i_mode
)
)
err
=
chrdev_open
(
inode
,
file
);
if
(
file
->
f_op
)
else
err
=
-
ENODEV
;
{
lock_kernel
();
err
=
file
->
f_op
->
open
?
(
*
file
->
f_op
->
open
)
(
inode
,
file
)
:
0
;
unlock_kernel
();
}
else
{
/* Fallback to legacy scheme */
if
(
S_ISCHR
(
inode
->
i_mode
)
)
err
=
chrdev_open
(
inode
,
file
);
else
err
=
-
ENODEV
;
}
}
}
if
(
err
<
0
)
return
err
;
if
(
err
<
0
)
return
err
;
/* Open was successful */
/* Open was successful */
...
...
fs/devfs/util.c
View file @
0e99284b
...
@@ -56,6 +56,8 @@
...
@@ -56,6 +56,8 @@
Made major bitfield type and initialiser 64 bit safe.
Made major bitfield type and initialiser 64 bit safe.
20020413 Richard Gooch <rgooch@atnf.csiro.au>
20020413 Richard Gooch <rgooch@atnf.csiro.au>
Fixed shift warning on 64 bit machines.
Fixed shift warning on 64 bit machines.
20020428 Richard Gooch <rgooch@atnf.csiro.au>
Copied and used macro for error messages from fs/devfs/base.c
*/
*/
#include <linux/module.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/init.h>
...
@@ -65,6 +67,9 @@
...
@@ -65,6 +67,9 @@
#include <asm/bitops.h>
#include <asm/bitops.h>
#define PRINTK(format, args...) \
{printk (KERN_ERR "%s" format, __FUNCTION__ , ## args);}
/* Private functions follow */
/* Private functions follow */
...
@@ -209,9 +214,7 @@ void devfs_dealloc_major (char type, int major)
...
@@ -209,9 +214,7 @@ void devfs_dealloc_major (char type, int major)
spin_lock
(
&
list
->
lock
);
spin_lock
(
&
list
->
lock
);
was_set
=
__test_and_clear_bit
(
major
,
list
->
bits
);
was_set
=
__test_and_clear_bit
(
major
,
list
->
bits
);
spin_unlock
(
&
list
->
lock
);
spin_unlock
(
&
list
->
lock
);
if
(
!
was_set
)
if
(
!
was_set
)
PRINTK
(
"(): major %d was already free
\n
"
,
major
);
printk
(
KERN_ERR
__FUNCTION__
"(): major %d was already free
\n
"
,
major
);
}
/* End Function devfs_dealloc_major */
}
/* End Function devfs_dealloc_major */
EXPORT_SYMBOL
(
devfs_dealloc_major
);
EXPORT_SYMBOL
(
devfs_dealloc_major
);
...
@@ -339,12 +342,11 @@ void devfs_dealloc_devnum (char type, kdev_t devnum)
...
@@ -339,12 +342,11 @@ void devfs_dealloc_devnum (char type, kdev_t devnum)
if
(
was_set
)
list
->
none_free
=
0
;
if
(
was_set
)
list
->
none_free
=
0
;
up
(
semaphore
);
up
(
semaphore
);
if
(
!
was_set
)
if
(
!
was_set
)
printk
(
KERN_ERR
__FUNCTION__
"(): device %s was already free
\n
"
,
PRINTK
(
"(): device %s was already free
\n
"
,
kdevname
(
devnum
)
);
kdevname
(
devnum
)
);
return
;
return
;
}
}
up
(
semaphore
);
up
(
semaphore
);
printk
(
KERN_ERR
__FUNCTION__
"(): major for %s not previously allocated
\n
"
,
PRINTK
(
"(): major for %s not previously allocated
\n
"
,
kdevname
(
devnum
)
);
kdevname
(
devnum
)
);
}
/* End Function devfs_dealloc_devnum */
}
/* End Function devfs_dealloc_devnum */
EXPORT_SYMBOL
(
devfs_dealloc_devnum
);
EXPORT_SYMBOL
(
devfs_dealloc_devnum
);
...
@@ -419,8 +421,6 @@ void devfs_dealloc_unique_number (struct unique_numspace *space, int number)
...
@@ -419,8 +421,6 @@ void devfs_dealloc_unique_number (struct unique_numspace *space, int number)
was_set
=
__test_and_clear_bit
(
number
,
space
->
bits
);
was_set
=
__test_and_clear_bit
(
number
,
space
->
bits
);
if
(
was_set
)
++
space
->
num_free
;
if
(
was_set
)
++
space
->
num_free
;
up
(
&
space
->
semaphore
);
up
(
&
space
->
semaphore
);
if
(
!
was_set
)
if
(
!
was_set
)
PRINTK
(
"(): number %d was already free
\n
"
,
number
);
printk
(
KERN_ERR
__FUNCTION__
"(): number %d was already free
\n
"
,
number
);
}
/* End Function devfs_dealloc_unique_number */
}
/* End Function devfs_dealloc_unique_number */
EXPORT_SYMBOL
(
devfs_dealloc_unique_number
);
EXPORT_SYMBOL
(
devfs_dealloc_unique_number
);
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