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
fda32883
Commit
fda32883
authored
Dec 01, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/jgarzik/misc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
46363b25
eccb5ce4
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
76 additions
and
30 deletions
+76
-30
drivers/pci/pci.c
drivers/pci/pci.c
+2
-0
fs/fcntl.c
fs/fcntl.c
+15
-23
fs/proc/generic.c
fs/proc/generic.c
+17
-4
include/linux/pci.h
include/linux/pci.h
+42
-3
No files found.
drivers/pci/pci.c
View file @
fda32883
...
@@ -88,6 +88,8 @@ pci_max_busnr(void)
...
@@ -88,6 +88,8 @@ pci_max_busnr(void)
* %PCI_CAP_ID_MSI Message Signalled Interrupts
* %PCI_CAP_ID_MSI Message Signalled Interrupts
*
*
* %PCI_CAP_ID_CHSWP CompactPCI HotSwap
* %PCI_CAP_ID_CHSWP CompactPCI HotSwap
*
* %PCI_CAP_ID_PCIX PCI-X
*/
*/
int
int
pci_find_capability
(
struct
pci_dev
*
dev
,
int
cap
)
pci_find_capability
(
struct
pci_dev
*
dev
,
int
cap
)
...
...
fs/fcntl.c
View file @
fda32883
...
@@ -75,8 +75,8 @@ static int expand_files(struct files_struct *files, int nr)
...
@@ -75,8 +75,8 @@ static int expand_files(struct files_struct *files, int nr)
/*
/*
* locate_fd finds a free file descriptor in the open_fds fdset,
* locate_fd finds a free file descriptor in the open_fds fdset,
* expanding the fd arrays if necessary.
The files write lock will b
e
* expanding the fd arrays if necessary.
Must be called with th
e
*
held on exit to ensure that the fd can be entered atomically
.
*
file_lock held for write
.
*/
*/
static
int
locate_fd
(
struct
files_struct
*
files
,
static
int
locate_fd
(
struct
files_struct
*
files
,
...
@@ -86,8 +86,6 @@ static int locate_fd(struct files_struct *files,
...
@@ -86,8 +86,6 @@ static int locate_fd(struct files_struct *files,
int
error
;
int
error
;
int
start
;
int
start
;
write_lock
(
&
files
->
file_lock
);
error
=
-
EINVAL
;
error
=
-
EINVAL
;
if
(
orig_start
>=
current
->
rlim
[
RLIMIT_NOFILE
].
rlim_cur
)
if
(
orig_start
>=
current
->
rlim
[
RLIMIT_NOFILE
].
rlim_cur
)
goto
out
;
goto
out
;
...
@@ -131,30 +129,24 @@ static int locate_fd(struct files_struct *files,
...
@@ -131,30 +129,24 @@ static int locate_fd(struct files_struct *files,
return
error
;
return
error
;
}
}
static
inline
void
allocate_fd
(
struct
files_struct
*
files
,
static
int
dupfd
(
struct
file
*
file
,
int
start
)
struct
file
*
file
,
int
fd
)
{
{
struct
files_struct
*
files
=
current
->
files
;
int
fd
;
write_lock
(
&
files
->
file_lock
);
fd
=
locate_fd
(
files
,
file
,
start
);
if
(
fd
>=
0
)
{
FD_SET
(
fd
,
files
->
open_fds
);
FD_SET
(
fd
,
files
->
open_fds
);
FD_CLR
(
fd
,
files
->
close_on_exec
);
FD_CLR
(
fd
,
files
->
close_on_exec
);
write_unlock
(
&
files
->
file_lock
);
write_unlock
(
&
files
->
file_lock
);
fd_install
(
fd
,
file
);
fd_install
(
fd
,
file
);
}
}
else
{
static
int
dupfd
(
struct
file
*
file
,
int
start
)
{
struct
files_struct
*
files
=
current
->
files
;
int
ret
;
ret
=
locate_fd
(
files
,
file
,
start
);
if
(
ret
<
0
)
goto
out_putf
;
allocate_fd
(
files
,
file
,
ret
);
return
ret
;
out_putf:
write_unlock
(
&
files
->
file_lock
);
write_unlock
(
&
files
->
file_lock
);
fput
(
file
);
fput
(
file
);
return
ret
;
}
return
fd
;
}
}
asmlinkage
long
sys_dup2
(
unsigned
int
oldfd
,
unsigned
int
newfd
)
asmlinkage
long
sys_dup2
(
unsigned
int
oldfd
,
unsigned
int
newfd
)
...
...
fs/proc/generic.c
View file @
fda32883
...
@@ -488,7 +488,11 @@ struct proc_dir_entry *proc_symlink(const char *name,
...
@@ -488,7 +488,11 @@ struct proc_dir_entry *proc_symlink(const char *name,
ent
->
data
=
kmalloc
((
ent
->
size
=
strlen
(
dest
))
+
1
,
GFP_KERNEL
);
ent
->
data
=
kmalloc
((
ent
->
size
=
strlen
(
dest
))
+
1
,
GFP_KERNEL
);
if
(
ent
->
data
)
{
if
(
ent
->
data
)
{
strcpy
((
char
*
)
ent
->
data
,
dest
);
strcpy
((
char
*
)
ent
->
data
,
dest
);
proc_register
(
parent
,
ent
);
if
(
proc_register
(
parent
,
ent
)
<
0
)
{
kfree
(
ent
->
data
);
kfree
(
ent
);
ent
=
NULL
;
}
}
else
{
}
else
{
kfree
(
ent
);
kfree
(
ent
);
ent
=
NULL
;
ent
=
NULL
;
...
@@ -505,7 +509,10 @@ struct proc_dir_entry *proc_mknod(const char *name, mode_t mode,
...
@@ -505,7 +509,10 @@ struct proc_dir_entry *proc_mknod(const char *name, mode_t mode,
ent
=
proc_create
(
&
parent
,
name
,
mode
,
1
);
ent
=
proc_create
(
&
parent
,
name
,
mode
,
1
);
if
(
ent
)
{
if
(
ent
)
{
ent
->
rdev
=
rdev
;
ent
->
rdev
=
rdev
;
proc_register
(
parent
,
ent
);
if
(
proc_register
(
parent
,
ent
)
<
0
)
{
kfree
(
ent
);
ent
=
NULL
;
}
}
}
return
ent
;
return
ent
;
}
}
...
@@ -520,7 +527,10 @@ struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *paren
...
@@ -520,7 +527,10 @@ struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *paren
ent
->
proc_fops
=
&
proc_dir_operations
;
ent
->
proc_fops
=
&
proc_dir_operations
;
ent
->
proc_iops
=
&
proc_dir_inode_operations
;
ent
->
proc_iops
=
&
proc_dir_inode_operations
;
proc_register
(
parent
,
ent
);
if
(
proc_register
(
parent
,
ent
)
<
0
)
{
kfree
(
ent
);
ent
=
NULL
;
}
}
}
return
ent
;
return
ent
;
}
}
...
@@ -549,7 +559,10 @@ struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
...
@@ -549,7 +559,10 @@ struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
ent
->
proc_fops
=
&
proc_dir_operations
;
ent
->
proc_fops
=
&
proc_dir_operations
;
ent
->
proc_iops
=
&
proc_dir_inode_operations
;
ent
->
proc_iops
=
&
proc_dir_inode_operations
;
}
}
proc_register
(
parent
,
ent
);
if
(
proc_register
(
parent
,
ent
)
<
0
)
{
kfree
(
ent
);
ent
=
NULL
;
}
}
}
return
ent
;
return
ent
;
}
}
...
...
include/linux/pci.h
View file @
fda32883
...
@@ -195,6 +195,7 @@
...
@@ -195,6 +195,7 @@
#define PCI_CAP_ID_SLOTID 0x04
/* Slot Identification */
#define PCI_CAP_ID_SLOTID 0x04
/* Slot Identification */
#define PCI_CAP_ID_MSI 0x05
/* Message Signalled Interrupts */
#define PCI_CAP_ID_MSI 0x05
/* Message Signalled Interrupts */
#define PCI_CAP_ID_CHSWP 0x06
/* CompactPCI HotSwap */
#define PCI_CAP_ID_CHSWP 0x06
/* CompactPCI HotSwap */
#define PCI_CAP_ID_PCIX 0x07
/* PCI-X */
#define PCI_CAP_LIST_NEXT 1
/* Next capability in the list */
#define PCI_CAP_LIST_NEXT 1
/* Next capability in the list */
#define PCI_CAP_FLAGS 2
/* Capability defined flags (16 bits) */
#define PCI_CAP_FLAGS 2
/* Capability defined flags (16 bits) */
#define PCI_CAP_SIZEOF 4
#define PCI_CAP_SIZEOF 4
...
@@ -251,6 +252,13 @@
...
@@ -251,6 +252,13 @@
#define PCI_AGP_COMMAND_RATE1 0x0001
/* Use 1x rate */
#define PCI_AGP_COMMAND_RATE1 0x0001
/* Use 1x rate */
#define PCI_AGP_SIZEOF 12
#define PCI_AGP_SIZEOF 12
/* Vital Product Data */
#define PCI_VPD_ADDR 2
/* Address to access (15 bits!) */
#define PCI_VPD_ADDR_MASK 0x7fff
/* Address mask */
#define PCI_VPD_ADDR_F 0x8000
/* Write 0, 1 indicates completion */
#define PCI_VPD_DATA 4
/* 32-bits of data returned here */
/* Slot Identification */
/* Slot Identification */
#define PCI_SID_ESR 2
/* Expansion Slot Register */
#define PCI_SID_ESR 2
/* Expansion Slot Register */
...
@@ -271,6 +279,37 @@
...
@@ -271,6 +279,37 @@
#define PCI_MSI_DATA_32 8
/* 16 bits of data for 32-bit devices */
#define PCI_MSI_DATA_32 8
/* 16 bits of data for 32-bit devices */
#define PCI_MSI_DATA_64 12
/* 16 bits of data for 64-bit devices */
#define PCI_MSI_DATA_64 12
/* 16 bits of data for 64-bit devices */
/* CompactPCI Hotswap Register */
#define PCI_CHSWP_CSR 2
/* Control and Status Register */
#define PCI_CHSWP_DHA 0x01
/* Device Hiding Arm */
#define PCI_CHSWP_EIM 0x02
/* ENUM# Signal Mask */
#define PCI_CHSWP_PIE 0x04
/* Pending Insert or Extract */
#define PCI_CHSWP_LOO 0x08
/* LED On / Off */
#define PCI_CHSWP_PI 0x30
/* Programming Interface */
#define PCI_CHSWP_EXT 0x40
/* ENUM# status - extraction */
#define PCI_CHSWP_INS 0x80
/* ENUM# status - insertion */
/* PCI-X registers */
#define PCI_X_CMD 2
/* Modes & Features */
#define PCI_X_CMD_DPERR_E 0x0001
/* Data Parity Error Recovery Enable */
#define PCI_X_CMD_ERO 0x0002
/* Enable Relaxed Ordering */
#define PCI_X_CMD_MAX_READ 0x000c
/* Max Memory Read Byte Count */
#define PCI_X_CMD_MAX_SPLIT 0x0070
/* Max Outstanding Split Transactions */
#define PCI_X_DEVFN 4
/* A copy of devfn. */
#define PCI_X_BUSNR 5
/* Bus segment number */
#define PCI_X_STATUS 6
/* PCI-X capabilities */
#define PCI_X_STATUS_64BIT 0x0001
/* 64-bit device */
#define PCI_X_STATUS_133MHZ 0x0002
/* 133 MHz capable */
#define PCI_X_STATUS_SPL_DISC 0x0004
/* Split Completion Discarded */
#define PCI_X_STATUS_UNX_SPL 0x0008
/* Unexpected Split Completion */
#define PCI_X_STATUS_COMPLEX 0x0010
/* Device Complexity */
#define PCI_X_STATUS_MAX_READ 0x0060
/* Designed Maximum Memory Read Count */
#define PCI_X_STATUS_MAX_SPLIT 0x0380
/* Design Max Outstanding Split Trans */
#define PCI_X_STATUS_MAX_CUM 0x1c00
/* Designed Max Cumulative Read Size */
#define PCI_X_STATUS_SPL_ERR 0x2000
/* Rcvd Split Completion Error Msg */
/* Include the ID list */
/* Include the ID list */
#include <linux/pci_ids.h>
#include <linux/pci_ids.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