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
4f412172
Commit
4f412172
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.3.30pre6
parent
0c38a3e2
Changes
30
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
3378 additions
and
128 deletions
+3378
-128
CREDITS
CREDITS
+2
-5
Documentation/filesystems/vfs.txt
Documentation/filesystems/vfs.txt
+39
-18
Documentation/networking/tlan.txt
Documentation/networking/tlan.txt
+17
-6
MAINTAINERS
MAINTAINERS
+1
-9
arch/alpha/kernel/sys_nautilus.c
arch/alpha/kernel/sys_nautilus.c
+0
-1
arch/i386/mm/init.c
arch/i386/mm/init.c
+14
-14
drivers/block/ide-features.c
drivers/block/ide-features.c
+1
-0
drivers/char/pc110pad.c
drivers/char/pc110pad.c
+4
-4
drivers/net/hp100.c
drivers/net/hp100.c
+3
-18
drivers/scsi/aic7xxx.c
drivers/scsi/aic7xxx.c
+1
-1
drivers/sound/Config.in
drivers/sound/Config.in
+2
-0
drivers/sound/Makefile
drivers/sound/Makefile
+1
-0
drivers/sound/trident.c
drivers/sound/trident.c
+3041
-0
drivers/sound/trident.h
drivers/sound/trident.h
+127
-0
fs/buffer.c
fs/buffer.c
+2
-0
fs/ncpfs/Config.in
fs/ncpfs/Config.in
+1
-1
fs/ncpfs/dir.c
fs/ncpfs/dir.c
+3
-3
fs/ncpfs/ioctl.c
fs/ncpfs/ioctl.c
+4
-8
fs/ntfs/fs.c
fs/ntfs/fs.c
+1
-1
fs/ntfs/super.c
fs/ntfs/super.c
+6
-5
include/asm-i386/page.h
include/asm-i386/page.h
+3
-0
include/asm-i386/pgalloc-3level.h
include/asm-i386/pgalloc-3level.h
+1
-1
include/asm-i386/pgalloc.h
include/asm-i386/pgalloc.h
+2
-2
include/asm-i386/pgtable-2level.h
include/asm-i386/pgtable-2level.h
+13
-0
include/asm-i386/pgtable-3level.h
include/asm-i386/pgtable-3level.h
+13
-2
include/asm-i386/pgtable.h
include/asm-i386/pgtable.h
+17
-24
include/asm-i386/system.h
include/asm-i386/system.h
+51
-1
include/asm-ppc/pgalloc.h
include/asm-ppc/pgalloc.h
+0
-1
include/linux/ntfs_fs_sb.h
include/linux/ntfs_fs_sb.h
+1
-0
net/core/dev.c
net/core/dev.c
+7
-3
No files found.
CREDITS
View file @
4f412172
...
...
@@ -156,12 +156,9 @@ S: Notre Dame, Indiana
S: USA
N: James Banks
E: james
.banks@caldera.com
E: james
@sovereign.org
D: TLAN network driver
S: Caldera, Inc.
S: 633 South 550 East
S: Provo, Utah 84606
S: USA
D: Logitech Busmouse driver
N: Krzysztof G. Baranowski
E: kgb@manjak.knm.org.pl
...
...
Documentation/filesystems/vfs.txt
View file @
4f412172
...
...
@@ -4,7 +4,7 @@
Richard Gooch <rgooch@atnf.csiro.au>
23-APR
-1999
5-JUL
-1999
Conventions used in this document <section>
...
...
@@ -41,10 +41,11 @@ mounted.
Opening a File <subsection>
--------------
The VFS implements the open(2) system call. The pathname argument is
used by the VFS to search through the directory entry cache (dentry
cache or "dcache"). This provides a very fast lookup mechanism to
translate a pathname (filename) into a specific dentry.
The VFS implements the open(2), stat(2), chmod(2) and similar system
calls. The pathname argument is used by the VFS to search through the
directory entry cache (dentry cache or "dcache"). This provides a very
fast lookup mechanism to translate a pathname (filename) into a
specific dentry.
An individual dentry usually has a pointer to an inode. Inodes are the
things that live on disc drives, and can be regular files (you know:
...
...
@@ -53,7 +54,8 @@ beasts. Dentries live in RAM and are never saved to disc: they exist
only for performance. Inodes live on disc and are copied into memory
when required. Later any changes are written back to disc. The inode
that lives in RAM is a VFS inode, and it is this which the dentry
points to.
points to. A single inode can be pointed to by multiple dentries
(think about hardlinks).
The dcache is meant to be a view into your entire filespace. Unlike
Linus, most of us losers can't fit enough dentries into RAM to cover
...
...
@@ -76,10 +78,10 @@ back to userspace.
Opening a file requires another operation: allocation of a file
structure (this is the kernel-side implementation of file
descriptors). The freshly allocated file structure is initialised with
a pointer to the dentry and a set of file operation member
functions. These are taken from the inode data. The open() file method
is then called so the specific filesystem implementation can do it's
work. You
can see that this is another switch performed by the VFS.
a pointer to the dentry and a set of file operation member
functions.
These are taken from the inode data. The open() file method is then
called so the specific filesystem implementation can do it's work. You
can see that this is another switch performed by the VFS.
The file structure is placed into the file descriptor table for the
process.
...
...
@@ -92,6 +94,14 @@ function to do whatever is required.
For as long as the file is open, it keeps the dentry "open" (in use),
which in turn means that the VFS inode is still in use.
All VFS system calls (i.e. open(2), stat(2), read(2), write(2),
chmod(2) and so on) are called from a process context. You should
assume that these calls are made without any kernel locks being
held. This means that the processes may be executing the same piece of
filesystem or driver code at the same time, on different
processors. You should ensure that access to shared resources is
protected by appropriate locks.
Registering and Mounting a Filesystem <subsection>
-------------------------------------
...
...
@@ -249,8 +259,11 @@ struct inode_operations {
int (*revalidate) (struct dentry *);
};
Again, all methods are called without any locks being held, unless
otherwise noted.
default_file_ops: this is a pointer to a "struct file_operations"
which describes how to manipulate open files
which describes how to
open and then
manipulate open files
create: called by the open(2) and creat(2) system calls. Only
required if you want to support regular files. The dentry you
...
...
@@ -270,7 +283,7 @@ struct inode_operations {
If you wish to overload the dentry methods then you should
initialise the "d_dop" field in the dentry; this is a pointer
to a struct "dentry_operations".
This method is called with the directory semaphore held
This method is called with the directory
inode
semaphore held
link: called by the link(2) system call. Only required if you want
to support hard links. You will probably need to call
...
...
@@ -327,17 +340,20 @@ struct file_operations {
int (*lock) (struct file *, int, struct file_lock *);
};
Again, all methods are called without any locks being held, unless
otherwise noted.
llseek: called when the VFS needs to move the file position index
read: called by
the read(2) system call
read: called by
read(2) and related system calls
write: called by
the write(2) system call
write: called by
write(2) and related system calls
readdir: called when the VFS needs to read the directory contents
poll: called by the VFS when a process wants to check if there is
activity on this file and (optionally) go to sleep until there
is activity
is activity
. Called by the select(2) and poll(2) system calls
ioctl: called by the ioctl(2) system call
...
...
@@ -380,7 +396,9 @@ struct dentry_operations <section>
This describes how a filesystem can overload the standard dentry
operations. Dentries and the dcache are the domain of the VFS and the
individual filesystem implementations. Device drivers have no business
here. As of kernel 2.1.99, the following members are defined:
here. These methods may be set to NULL, as they are either optional or
the VFS uses a default. As of kernel 2.1.99, the following members are
defined:
struct dentry_operations {
int (*d_revalidate)(struct dentry *);
...
...
@@ -391,7 +409,10 @@ struct dentry_operations {
void (*d_iput)(struct dentry *, struct inode *);
};
d_revalidate: called when the VFS needs to revalidate a dentry
d_revalidate: called when the VFS needs to revalidate a dentry. This
is called whenever a name lookup finds a dentry in the
dcache. Most filesystems leave this as NULL, because all their
dentries in the dcache are valid
d_hash: called when the VFS adds a dentry to the hash table
...
...
@@ -401,7 +422,7 @@ struct dentry_operations {
deleted. This means no-one is using the dentry, however it is
still valid and in the dcache
d_release: called when a dentry is deallocated
d_release: called when a dentry is
really
deallocated
d_iput: called when a dentry looses its inode (just prior to its
being deallocated). The default when this is NULL is that the
...
...
Documentation/networking/tlan.txt
View file @
4f412172
TLAN driver for Linux, version 1.0
README
Well, I'm back. The TLAN driver seems pretty stable, so I'm
declaring this cycle of development finished, and calling the
driver 1.0. I will, of course continue to work on improving
the driver, and work towards a 2.0 release.
I haven't had any time to do anything for a long time, and this isn't
likely to change. So there's a driver here for anyone looking to
carry forward a project :)
For those who are looking for help, I can't. I haven't looked at
a kernel since the early 2.0 series, so I won't know what's going on.
Your best chance at help would be joining the TLAN mailing list and
posting your question there.
You can join by sending "subscribe tlan" in the body of an email to
majordomo@vuser.vu.union.edu.
Thanks to those who have (and who will ;) put work in to keep the TLAN
driver working as the kernel moves on.
James
james@sovereign.org
TLAN driver for Linux, version 1.0
README
I. Supported Devices.
...
...
MAINTAINERS
View file @
4f412172
...
...
@@ -428,12 +428,6 @@ M: ipslinux@us.ibm.com
W: http://www.developer.ibm.com/welcome/netfinity/serveraid_beta.html
S: Supported
IBM ServeRAID RAID DRIVER
P: Keith Mitchell
M: ipslinux@us.ibm.com
W: http://www.developer.ibm.com/welcome/netfinity/serveraid_beta.html
S: Supported
IDE DRIVER [GENERAL]
P: Andre Hedrick
M: andre@suse.com
...
...
@@ -889,10 +883,8 @@ M: kgb@manjak.knm.org.pl
S: Maintained
TLAN NETWORK DRIVER
P: James Banks
M: james@sovereign.org
L: tlan@vuser.vu.union.edu
S:
Maintained
S:
Orphan
TOKEN-RING NETWORK DRIVER
P: Paul Norton
...
...
arch/alpha/kernel/sys_nautilus.c
View file @
4f412172
...
...
@@ -24,7 +24,6 @@
* 2 USB ports
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/mm.h>
...
...
arch/i386/mm/init.c
View file @
4f412172
...
...
@@ -76,7 +76,7 @@ static pmd_t * get_bad_pmd_table(void)
pmd_t
v
;
int
i
;
pmd_val
(
v
)
=
_PAGE_TABLE
+
__pa
(
empty_bad_pte_table
);
set_pmd
(
&
v
,
__pmd
(
_PAGE_TABLE
+
__pa
(
empty_bad_pte_table
))
);
for
(
i
=
0
;
i
<
PAGE_SIZE
/
sizeof
(
pmd_t
);
i
++
)
empty_bad_pmd_table
[
i
]
=
v
;
...
...
@@ -103,13 +103,13 @@ static pte_t * get_bad_pte_table(void)
void
__handle_bad_pmd
(
pmd_t
*
pmd
)
{
pmd_ERROR
(
*
pmd
);
pmd_val
(
*
pmd
)
=
_PAGE_TABLE
+
__pa
(
get_bad_pte_table
(
));
set_pmd
(
pmd
,
__pmd
(
_PAGE_TABLE
+
__pa
(
get_bad_pte_table
())
));
}
void
__handle_bad_pmd_kernel
(
pmd_t
*
pmd
)
{
pmd_ERROR
(
*
pmd
);
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
get_bad_pte_table
(
));
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
get_bad_pte_table
())
));
}
pte_t
*
get_pte_kernel_slow
(
pmd_t
*
pmd
,
unsigned
long
offset
)
...
...
@@ -120,10 +120,10 @@ pte_t *get_pte_kernel_slow(pmd_t *pmd, unsigned long offset)
if
(
pmd_none
(
*
pmd
))
{
if
(
pte
)
{
clear_page
(
pte
);
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
pte
);
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
pte
))
);
return
pte
+
offset
;
}
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
get_bad_pte_table
(
));
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
get_bad_pte_table
())
));
return
NULL
;
}
free_page
((
unsigned
long
)
pte
);
...
...
@@ -142,10 +142,10 @@ pte_t *get_pte_slow(pmd_t *pmd, unsigned long offset)
if
(
pmd_none
(
*
pmd
))
{
if
(
pte
)
{
clear_page
((
void
*
)
pte
);
pmd_val
(
*
pmd
)
=
_PAGE_TABLE
+
__pa
(
pte
);
set_pmd
(
pmd
,
__pmd
(
_PAGE_TABLE
+
__pa
(
pte
))
);
return
(
pte_t
*
)
pte
+
offset
;
}
pmd_val
(
*
pmd
)
=
_PAGE_TABLE
+
__pa
(
get_bad_pte_table
(
));
set_pmd
(
pmd
,
__pmd
(
_PAGE_TABLE
+
__pa
(
get_bad_pte_table
())
));
return
NULL
;
}
free_page
(
pte
);
...
...
@@ -268,7 +268,7 @@ void set_fixmap (enum fixed_addresses idx, unsigned long phys)
printk
(
"Invalid set_fixmap
\n
"
);
return
;
}
set_pte_phys
(
address
,
phys
);
set_pte_phys
(
address
,
phys
);
}
static
void
__init
fixrange_init
(
unsigned
long
start
,
unsigned
long
end
,
pgd_t
*
pgd_base
)
...
...
@@ -286,7 +286,7 @@ static void __init fixrange_init (unsigned long start, unsigned long end, pgd_t
#if CONFIG_X86_PAE
if
(
pgd_none
(
*
pgd
))
{
pmd
=
(
pmd_t
*
)
alloc_bootmem_low_pages
(
PAGE_SIZE
);
pgd_val
(
*
pgd
)
=
__pa
(
pmd
)
+
0x1
;
set_pgd
(
pgd
,
__pgd
(
__pa
(
pmd
)
+
0x1
))
;
if
(
pmd
!=
pmd_offset
(
pgd
,
start
))
BUG
();
}
...
...
@@ -297,7 +297,7 @@ static void __init fixrange_init (unsigned long start, unsigned long end, pgd_t
for
(;
(
j
<
PTRS_PER_PMD
)
&&
start
;
pmd
++
,
j
++
)
{
if
(
pmd_none
(
*
pmd
))
{
pte
=
(
pte_t
*
)
alloc_bootmem_low_pages
(
PAGE_SIZE
);
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
pte
);
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
pte
))
);
if
(
pte
!=
pte_offset
(
pmd
,
0
))
BUG
();
}
...
...
@@ -326,7 +326,7 @@ static void __init pagetable_init(void)
vaddr
=
i
*
PGDIR_SIZE
;
#if CONFIG_X86_PAE
pmd
=
(
pmd_t
*
)
alloc_bootmem_low_pages
(
PAGE_SIZE
);
pgd_val
(
*
pgd
)
=
__pa
(
pmd
)
+
0x1
;
set_pgd
(
pgd
,
__pgd
(
__pa
(
pmd
)
+
0x1
))
;
#else
pmd
=
(
pmd_t
*
)
pgd
;
#endif
...
...
@@ -345,12 +345,12 @@ static void __init pagetable_init(void)
set_in_cr4
(
X86_CR4_PGE
);
__pe
+=
_PAGE_GLOBAL
;
}
pmd_val
(
*
pmd
)
=
__pe
;
set_pmd
(
pmd
,
__pmd
(
__pe
))
;
continue
;
}
pte
=
(
pte_t
*
)
alloc_bootmem_low_pages
(
PAGE_SIZE
);
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
pte
);
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
pte
))
);
if
(
pte
!=
pte_offset
(
pmd
,
0
))
BUG
();
...
...
@@ -412,7 +412,7 @@ void __init zap_low_mappings (void)
#if CONFIG_X86_PAE
pgd_clear
(
swapper_pg_dir
+
i
);
#else
pgd_val
(
swapper_pg_dir
[
i
])
=
0
;
set_pgd
(
swapper_pg_dir
+
i
,
__pgd
(
0
))
;
#endif
flush_tlb_all
();
}
...
...
drivers/block/ide-features.c
View file @
4f412172
...
...
@@ -13,6 +13,7 @@
* Gadi Oxman <gadio@netvision.net.il>
*/
#define __NO_VERSION__
#include <linux/module.h>
#include <linux/types.h>
#include <linux/string.h>
...
...
drivers/char/pc110pad.c
View file @
4f412172
...
...
@@ -53,7 +53,7 @@ static struct pc110pad_params current_params;
static
wait_queue_head_t
queue
;
static
struct
fasync_struct
*
asyncptr
;
static
int
active
=
0
;
/* number of concurrent open()s */
static
struct
semaphore
read_lock
;
static
struct
semaphore
read
er
_lock
;
/*
* Utility to reset a timer to go off some time in the future.
...
...
@@ -561,7 +561,7 @@ static ssize_t read_pad(struct file * file, char * buffer, size_t count, loff_t
{
int
r
;
down
(
&
read_lock
);
down
(
&
read
er
_lock
);
for
(
r
=
0
;
r
<
count
;
r
++
)
{
if
(
!
read_byte_count
)
...
...
@@ -573,7 +573,7 @@ static ssize_t read_pad(struct file * file, char * buffer, size_t count, loff_t
}
read_byte_count
=
(
read_byte_count
+
1
)
%
3
;
}
up
(
&
read_lock
);
up
(
&
read
er
_lock
);
return
r
;
}
...
...
@@ -691,7 +691,7 @@ static void pc110pad_unload(void)
int
init_module
(
void
)
{
init_MUTEX
(
&
read_lock
);
init_MUTEX
(
&
read
er
_lock
);
return
pc110pad_init
();
}
...
...
drivers/net/hp100.c
View file @
4f412172
...
...
@@ -2,11 +2,11 @@
** hp100.c
** HP CASCADE Architecture Driver for 100VG-AnyLan Network Adapters
**
** $Id: hp100.c,v 1.5
8 1999/11/30 17:20:20
perex Exp perex $
** $Id: hp100.c,v 1.5
7 1998/04/10 16:27:23
perex Exp perex $
**
** Based on the HP100 driver written by Jaroslav Kysela <perex@jcu.cz>
** Extended for new busmaster capable chipsets by
** Siegfried "Frieder" Loeffler (dg1sek) <
loeffler@cdi.fr
>
** Siegfried "Frieder" Loeffler (dg1sek) <
floeff@mathematik.uni-stuttgart.de
>
**
** Maintained by: Jaroslav Kysela <perex@jcu.cz>
**
...
...
@@ -45,8 +45,6 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** 1.57 -> 1.58
** - 'no connection found' message is time limited now
**
** 1.56 -> 1.57
** - updates for new PCI interface for 2.1 kernels
...
...
@@ -1670,20 +1668,7 @@ static int hp100_start_xmit_bm( struct sk_buff *skb, struct net_device *dev )
hp100_stop_interface
(
dev
);
if
(
(
lp
->
lan_type
=
hp100_sense_lan
(
dev
)
)
<
0
)
{
/* Added Mon Nov 1 06:13:19 1999 by Brian Moore
* (mooreb@iname.com) to prevent too much kernel IO
* in the case of not having a network connection
*/
{
int
thistime
=
jiffies
;
static
int
delaytime
=
10
*
HZ
;
static
int
lasttime
=
thistime
-
delaytime
;
// We don't worry about rollover
if
(
thistime
>=
(
lasttime
+
delaytime
))
{
printk
(
"hp100: %s: no connection found - check wire
\n
"
,
dev
->
name
);
lasttime
=
thistime
;
}
}
hp100_start_interface
(
dev
);
/* 10Mb/s RX pkts maybe handled */
return
-
EIO
;
}
...
...
drivers/scsi/aic7xxx.c
View file @
4f412172
...
...
@@ -1640,7 +1640,7 @@ aic7xxx_setup(char *s)
}
}
__setup
(
"aic7xxx="
,
ai
x
7xxx_setup
);
__setup
(
"aic7xxx="
,
ai
c
7xxx_setup
);
/*+F*************************************************************************
* Function:
...
...
drivers/sound/Config.in
View file @
4f412172
...
...
@@ -28,6 +28,8 @@ if [ "$CONFIG_VISWS" = "y" ]; then
dep_tristate ' SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
fi
dep_tristate ' Trident 4DWave-DX/NX' CONFIG_SOUND_TRIDENT $CONFIG_SOUND
dep_tristate ' Support for Turtle Beach MultiSound Classic, Tahiti, Monterey' CONFIG_SOUND_MSNDCLAS $CONFIG_SOUND
if [ "$CONFIG_SOUND_MSNDCLAS" = "y" -o "$CONFIG_SOUND_MSNDCLAS" = "m" ]; then
if [ "$CONFIG_SOUND_MSNDCLAS" = "y" ]; then
...
...
drivers/sound/Makefile
View file @
4f412172
...
...
@@ -84,6 +84,7 @@ obj-$(CONFIG_SOUND_ES1370) += es1370.o
obj-$(CONFIG_SOUND_ES1371)
+=
es1371.o
obj-$(CONFIG_SOUND_ESSSOLO1)
+=
esssolo1.o
obj-$(CONFIG_SOUND_MAESTRO)
+=
maestro.o
obj-$(CONFIG_SOUND_TRIDENT)
+=
trident.o
# Declare multi-part drivers.
...
...
drivers/sound/trident.c
0 → 100644
View file @
4f412172
This diff is collapsed.
Click to expand it.
drivers/sound/trident.h
0 → 100644
View file @
4f412172
#ifndef __TRID4DWAVE_H
#define __TRID4DWAVE_H
/*
* audio@tridentmicro.com
* Fri Feb 19 15:55:28 MST 1999
* Definitions for Trident 4DWave DX/NX chips
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef PCI_VENDOR_ID_TRIDENT
#define PCI_VENDOR_ID_TRIDENT 0x1023
#endif
#ifndef PCI_DEVICE_ID_TRIDENT_4DWAVE_DX
#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000
#endif
#ifndef PCI_DEVICE_ID_TRIDENT_4DWAVE_NX
#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001
#endif
/*
* Direct registers
*/
#ifndef FALSE
#define FALSE 0
#define TRUE 1
#endif
#define TRID_REG( trident, x ) ( (trident) -> iobase + (x) )
#define CHANNEL_REGS 5
#define CHANNEL_START 0xe0 // The first bytes of the contiguous register space.
#define ID_4DWAVE_DX 0x2000
#define ID_4DWAVE_NX 0x2001
// Register definitions
// Global registers
// T2 legacy dma control registers.
#define LEGACY_DMAR0 0x00 // ADR0
#define LEGACY_DMAR4 0x04 // CNT0
#define LEGACY_DMAR11 0x0b // MOD
#define LEGACY_DMAR15 0x0f // MMR
#define T4D_START_A 0x80
#define T4D_STOP_A 0x84
#define T4D_DLY_A 0x88
#define T4D_SIGN_CSO_A 0x8c
#define T4D_CSPF_A 0x90
#define T4D_CEBC_A 0x94
#define T4D_AINT_A 0x98
#define T4D_AINTEN_A 0x9c
#define T4D_LFO_GC_CIR 0xa0
#define T4D_MUSICVOL_WAVEVOL 0xa8
#define T4D_SBDELTA_DELTA_R 0xac
#define T4D_MISCINT 0xb0
#define T4D_START_B 0xb4
#define T4D_STOP_B 0xb8
#define T4D_SBBL_SBCL 0xc0
#define T4D_SBCTRL_SBE2R_SBDD 0xc4
#define T4D_AINT_B 0xd8
#define T4D_AINTEN_B 0xdc
// MPU-401 UART
#define T4D_MPU401_BASE 0x20
#define T4D_MPUR0 0x20
#define T4D_MPUR1 0x21
#define T4D_MPUR2 0x22
#define T4D_MPUR3 0x23
// S/PDIF Registers
#define NX_SPCTRL_SPCSO 0x24
#define NX_SPLBA 0x28
#define NX_SPESO 0x2c
#define NX_SPCSTATUS 0x64
// Channel Registers
#define CH_DX_CSO_ALPHA_FMS 0xe0
#define CH_DX_ESO_DELTA 0xe8
#define CH_DX_FMC_RVOL_CVOL 0xec
#define CH_NX_DELTA_CSO 0xe0
#define CH_NX_DELTA_ESO 0xe8
#define CH_NX_ALPHA_FMS_FMC_RVOL_CVOL 0xec
#define CH_LBA 0xe4
#define CH_GVSEL_PAN_VOL_CTRL_EC 0xf0
// AC-97 Registers
#define DX_ACR0_AC97_W 0x40
#define DX_ACR1_AC97_R 0x44
#define DX_ACR2_AC97_COM_STAT 0x48
#define NX_ACR0_AC97_COM_STAT 0x40
#define NX_ACR1_AC97_W 0x44
#define NX_ACR2_AC97_R_PRIMARY 0x48
#define NX_ACR3_AC97_R_SECONDARY 0x4c
#define AC97_SIGMATEL_DAC2INVERT 0x6E
#define AC97_SIGMATEL_BIAS1 0x70
#define AC97_SIGMATEL_BIAS2 0x72
#define AC97_SIGMATEL_CIC1 0x76
#define AC97_SIGMATEL_CIC2 0x78
#endif
/* __TRID4DWAVE_H */
fs/buffer.c
View file @
4f412172
...
...
@@ -1449,6 +1449,8 @@ int block_write_range(struct dentry *dentry, struct page *page,
err
=
copy_from_user
(
kaddr
+
from
,
buf
,
to
-
from
);
if
(
to
<
zeroto
)
memset
(
kaddr
+
to
,
0
,
zeroto
-
to
);
else
zeroto
=
to
;
if
(
err
<
0
)
goto
out
;
/*
...
...
fs/ncpfs/Config.in
View file @
4f412172
...
...
@@ -10,6 +10,6 @@ if [ "$CONFIG_NCPFS_OS2_NS" = "y" ]; then
bool ' Lowercase DOS filenames' CONFIG_NCPFS_SMALLDOS
fi
bool ' Allow mounting of volume subdirectories' CONFIG_NCPFS_MOUNT_SUBDIR
# bool ' NDS interserver
authentication support' CONFIG_NCPFS_NDS_DOMAINS
bool ' NDS
authentication support' CONFIG_NCPFS_NDS_DOMAINS
bool ' Use Native Language Support' CONFIG_NCPFS_NLS
bool ' Enable symbolic links and execute flags' CONFIG_NCPFS_EXTRAS
fs/ncpfs/dir.c
View file @
4f412172
...
...
@@ -487,7 +487,7 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
filp
->
f_pos
=
2
;
}
page
=
find_lock
_page
(
&
inode
->
i_data
,
0
);
page
=
grab_cache
_page
(
&
inode
->
i_data
,
0
);
if
(
!
page
)
goto
read_really
;
...
...
@@ -516,7 +516,7 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
for
(;;)
{
if
(
ctl
.
ofs
!=
0
)
{
ctl
.
page
=
grab_cache
_page
(
&
inode
->
i_data
,
ctl
.
ofs
);
ctl
.
page
=
find_lock
_page
(
&
inode
->
i_data
,
ctl
.
ofs
);
if
(
!
ctl
.
page
)
goto
invalid_cache
;
ctl
.
cache
=
(
union
ncp_dir_cache
*
)
...
...
@@ -661,7 +661,7 @@ ncp_fill_cache(struct file *filp, void *dirent, filldir_t filldir,
ctl
.
cache
=
NULL
;
ctl
.
idx
-=
NCP_DIRCACHE_SIZE
;
ctl
.
ofs
+=
1
;
ctl
.
page
=
find_lock
_page
(
&
inode
->
i_data
,
ctl
.
ofs
);
ctl
.
page
=
grab_cache
_page
(
&
inode
->
i_data
,
ctl
.
ofs
);
if
(
ctl
.
page
)
ctl
.
cache
=
(
union
ncp_dir_cache
*
)
kmap
(
ctl
.
page
);
...
...
fs/ncpfs/ioctl.c
View file @
4f412172
...
...
@@ -364,8 +364,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
#ifdef CONFIG_NCPFS_NDS_DOMAINS
case
NCP_IOC_GETOBJECTNAME
:
if
(
(
permission
(
inode
,
MAY_READ
)
!=
0
)
&&
(
current
->
uid
!=
server
->
m
.
mounted_uid
))
{
if
(
current
->
uid
!=
server
->
m
.
mounted_uid
)
{
return
-
EACCES
;
}
{
...
...
@@ -396,8 +395,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
0
;
}
case
NCP_IOC_SETOBJECTNAME
:
if
(
(
permission
(
inode
,
MAY_WRITE
)
!=
0
)
&&
(
current
->
uid
!=
server
->
m
.
mounted_uid
))
{
if
(
current
->
uid
!=
server
->
m
.
mounted_uid
)
{
return
-
EACCES
;
}
{
...
...
@@ -441,8 +439,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
0
;
}
case
NCP_IOC_GETPRIVATEDATA
:
if
(
(
permission
(
inode
,
MAY_READ
)
!=
0
)
&&
(
current
->
uid
!=
server
->
m
.
mounted_uid
))
{
if
(
current
->
uid
!=
server
->
m
.
mounted_uid
)
{
return
-
EACCES
;
}
{
...
...
@@ -471,8 +468,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
0
;
}
case
NCP_IOC_SETPRIVATEDATA
:
if
(
(
permission
(
inode
,
MAY_WRITE
)
!=
0
)
&&
(
current
->
uid
!=
server
->
m
.
mounted_uid
))
{
if
(
current
->
uid
!=
server
->
m
.
mounted_uid
)
{
return
-
EACCES
;
}
{
...
...
fs/ntfs/fs.c
View file @
4f412172
...
...
@@ -835,7 +835,7 @@ static int ntfs_statfs(struct super_block *sb, struct statfs *sf, int bufsize)
/* Number of files is limited by free space only, so we lie here */
fs
.
f_ffree
=
0
;
mft
=
iget
(
sb
,
FILE_MFT
);
fs
.
f_files
=
mft
->
i_size
/
vol
->
mft_recordsize
;
fs
.
f_files
=
mft
->
i_size
>>
vol
->
mft_recordbits
;
iput
(
mft
);
/* should be read from volume */
...
...
fs/ntfs/super.c
View file @
4f412172
...
...
@@ -91,12 +91,13 @@ int ntfs_init_volume(ntfs_volume *vol,char *boot)
if
(
vol
->
mft_clusters_per_record
<
0
&&
vol
->
mft_clusters_per_record
!=-
10
)
ntfs_error
(
"Unexpected data #4 in boot block
\n
"
);
vol
->
clustersize
=
vol
->
blocksize
*
vol
->
clusterfactor
;
if
(
vol
->
mft_clusters_per_record
>
0
)
vol
->
mft_recordsize
=
vol
->
clustersize
*
vol
->
mft_clusters_per_record
;
vol
->
clustersize
=
vol
->
blocksize
*
vol
->
clusterfactor
;
if
(
vol
->
mft_clusters_per_record
>
0
)
vol
->
mft_recordbits
=
vol
->
clustersize
*
vol
->
mft_clusters_per_record
;
else
vol
->
mft_recordsize
=
1
<<
(
-
vol
->
mft_clusters_per_record
);
vol
->
mft_recordbits
=
-
vol
->
mft_clusters_per_record
;
vol
->
mft_recordsize
=
1
<<
vol
->
mft_recordbits
;
vol
->
index_recordsize
=
vol
->
clustersize
*
vol
->
index_clusters_per_record
;
/* FIXME: long long value */
vol
->
mft_cluster
=
NTFS_GETU64
(
boot
+
0x30
);
...
...
include/asm-i386/page.h
View file @
4f412172
...
...
@@ -50,6 +50,9 @@ typedef struct { unsigned long pgprot; } pgprot_t;
#define pgd_val(x) ((x).pgd)
#define pgprot_val(x) ((x).pgprot)
#define __pte(x) ((pte_t) { (x) } )
#define __pmd(x) ((pmd_t) { (x) } )
#define __pgd(x) ((pgd_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )
#endif
/* !__ASSEMBLY__ */
...
...
include/asm-i386/pgalloc-3level.h
View file @
4f412172
...
...
@@ -54,7 +54,7 @@ extern inline pmd_t * pmd_alloc(pgd_t *pgd, unsigned long address)
page
=
get_pmd_slow
();
if
(
page
)
{
if
(
pgd_none
(
*
pgd
))
{
pgd_val
(
*
pgd
)
=
1
+
__pa
(
page
);
set_pgd
(
pgd
,
__pgd
(
1
+
__pa
(
page
))
);
__flush_tlb
();
return
page
+
address
;
}
else
...
...
include/asm-i386/pgalloc.h
View file @
4f412172
...
...
@@ -107,7 +107,7 @@ extern inline pte_t * pte_alloc_kernel(pmd_t * pmd, unsigned long address)
if
(
!
page
)
return
get_pte_kernel_slow
(
pmd
,
address
);
pmd_val
(
*
pmd
)
=
_KERNPG_TABLE
+
__pa
(
page
);
set_pmd
(
pmd
,
__pmd
(
_KERNPG_TABLE
+
__pa
(
page
))
);
return
page
+
address
;
}
if
(
pmd_bad
(
*
pmd
))
{
...
...
@@ -132,7 +132,7 @@ extern inline pte_t * pte_alloc(pmd_t * pmd, unsigned long address)
if
(
!
page
)
return
get_pte_slow
(
pmd
,
address
);
pmd_val
(
*
pmd
)
=
_PAGE_TABLE
+
__pa
(
page
);
set_pmd
(
pmd
,
__pmd
(
_PAGE_TABLE
+
__pa
(
page
))
);
return
(
pte_t
*
)
page
+
address
;
}
fix:
...
...
include/asm-i386/pgtable-2level.h
View file @
4f412172
...
...
@@ -34,6 +34,19 @@ extern inline int pgd_bad(pgd_t pgd) { return 0; }
extern
inline
int
pgd_present
(
pgd_t
pgd
)
{
return
1
;
}
#define pgd_clear(xp) do { } while (0)
/*
* Certain architectures need to do special things when PTEs
* within a page table are directly modified. Thus, the following
* hook is made available.
*/
#define set_pte(pteptr, pteval) (*(pteptr) = pteval)
/*
* (pmds are folded into pgds so this doesnt get actually called,
* but the define is needed for a generic inline function.)
*/
#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
#define set_pgd(pgdptr, pgdval) (*(pgdptr) = pgdval)
#define pgd_page(pgd) \
((unsigned long) __va(pgd_val(pgd) & PAGE_MASK))
...
...
include/asm-i386/pgtable-3level.h
View file @
4f412172
...
...
@@ -35,11 +35,22 @@
/*
* Subtle, in PAE mode we cannot have zeroes in the top level
* page directory, the CPU enforces this.
* page directory, the CPU enforces this. (ie. the PGD entry
* always has to have the present bit set.) The CPU caches
* the 4 pgd entries internally, so there is no extra memory
* load on TLB miss, despite one more level of indirection.
*/
#define pgd_none(x) (pgd_val(x) == 1ULL)
extern
inline
int
pgd_bad
(
pgd_t
pgd
)
{
return
0
;
}
extern
inline
int
pgd_present
(
pgd_t
pgd
)
{
return
!
pgd_none
(
pgd
);
}
#define set_pte(pteptr,pteval) \
set_64bit((unsigned long long *)(pteptr),pte_val(pteval))
#define set_pmd(pmdptr,pmdval) \
set_64bit((unsigned long long *)(pmdptr),pmd_val(pmdval))
#define set_pgd(pgdptr,pgdval) \
set_64bit((unsigned long long *)(pgdptr),pgd_val(pgdval))
/*
* Pentium-II errata A13: in PAE mode we explicitly have to flush
* the TLB via cr3 if the top-level pgd is changed... This was one tough
...
...
@@ -48,7 +59,7 @@ extern inline int pgd_present(pgd_t pgd) { return !pgd_none(pgd); }
*/
extern
inline
void
__pgd_clear
(
pgd_t
*
pgd
)
{
pgd_val
(
*
pgd
)
=
1
;
// no zero allowed!
set_pgd
(
pgd
,
__pgd
(
1ULL
));
}
extern
inline
void
pgd_clear
(
pgd_t
*
pgd
)
...
...
include/asm-i386/pgtable.h
View file @
4f412172
...
...
@@ -52,13 +52,6 @@ __asm__ __volatile__("invlpg %0": :"m" (*(char *) addr))
#endif
#endif
/*
* Certain architectures need to do special things when PTEs
* within a page table are directly modified. Thus, the following
* hook is made available.
*/
#define set_pte(pteptr, pteval) ((*(pteptr)) = (pteval))
#define __beep() asm("movb $0x3,%al; outb %al,$0x61")
#define PMD_SIZE (1UL << PMD_SHIFT)
...
...
@@ -166,13 +159,13 @@ extern void __handle_bad_pmd_kernel(pmd_t * pmd);
#define pte_none(x) (!pte_val(x))
#define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE))
#define pte_clear(xp) do {
pte_val(*(xp)) = 0
; } while (0)
#define pte_clear(xp) do {
set_pte(xp, __pte(0))
; } while (0)
#define pte_pagenr(x) ((unsigned long)((pte_val(x) >> PAGE_SHIFT)))
#define pmd_none(x) (!pmd_val(x))
#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
/*
* Permanent address of a page. Obviously must never be
...
...
@@ -193,16 +186,16 @@ extern inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
extern
inline
int
pte_young
(
pte_t
pte
)
{
return
pte_val
(
pte
)
&
_PAGE_ACCESSED
;
}
extern
inline
int
pte_write
(
pte_t
pte
)
{
return
pte_val
(
pte
)
&
_PAGE_RW
;
}
extern
inline
pte_t
pte_rdprotect
(
pte_t
pte
)
{
pte_val
(
pte
)
&=
~
_PAGE_USER
;
return
pte
;
}
extern
inline
pte_t
pte_exprotect
(
pte_t
pte
)
{
pte_val
(
pte
)
&=
~
_PAGE_USER
;
return
pte
;
}
extern
inline
pte_t
pte_mkclean
(
pte_t
pte
)
{
pte_val
(
pte
)
&=
~
_PAGE_DIRTY
;
return
pte
;
}
extern
inline
pte_t
pte_mkold
(
pte_t
pte
)
{
pte_val
(
pte
)
&=
~
_PAGE_ACCESSED
;
return
pte
;
}
extern
inline
pte_t
pte_wrprotect
(
pte_t
pte
)
{
pte_val
(
pte
)
&=
~
_PAGE_RW
;
return
pte
;
}
extern
inline
pte_t
pte_mkread
(
pte_t
pte
)
{
pte_val
(
pte
)
|=
_PAGE_USER
;
return
pte
;
}
extern
inline
pte_t
pte_mkexec
(
pte_t
pte
)
{
pte_val
(
pte
)
|=
_PAGE_USER
;
return
pte
;
}
extern
inline
pte_t
pte_mkdirty
(
pte_t
pte
)
{
pte_val
(
pte
)
|=
_PAGE_DIRTY
;
return
pte
;
}
extern
inline
pte_t
pte_mkyoung
(
pte_t
pte
)
{
pte_val
(
pte
)
|=
_PAGE_ACCESSED
;
return
pte
;
}
extern
inline
pte_t
pte_mkwrite
(
pte_t
pte
)
{
pte_val
(
pte
)
|=
_PAGE_RW
;
return
pte
;
}
extern
inline
pte_t
pte_rdprotect
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
&
~
_PAGE_USER
))
;
return
pte
;
}
extern
inline
pte_t
pte_exprotect
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
&
~
_PAGE_USER
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkclean
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
&
~
_PAGE_DIRTY
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkold
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
&
~
_PAGE_ACCESSED
))
;
return
pte
;
}
extern
inline
pte_t
pte_wrprotect
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
&
~
_PAGE_RW
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkread
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
|
_PAGE_USER
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkexec
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
|
_PAGE_USER
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkdirty
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
|
_PAGE_DIRTY
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkyoung
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
|
_PAGE_ACCESSED
))
;
return
pte
;
}
extern
inline
pte_t
pte_mkwrite
(
pte_t
pte
)
{
set_pte
(
&
pte
,
__pte
(
pte_val
(
pte
)
|
_PAGE_RW
))
;
return
pte
;
}
/*
* Conversion functions: convert a page and protection to a page entry,
...
...
@@ -213,17 +206,17 @@ extern inline pte_t pte_mkwrite(pte_t pte) { pte_val(pte) |= _PAGE_RW; return pt
({ \
pte_t __pte; \
\
pte_val(__pte) = ((page)-mem_map)*(unsigned long long)PAGE_SIZE +
\
pgprot_val(pgprot);
\
set_pte(&__pte, __pte(((page)-mem_map) *
\
(unsigned long long)PAGE_SIZE + pgprot_val(pgprot)));
\
__pte; \
})
/* This takes a physical page address that is used by the remapping functions */
#define mk_pte_phys(physpage, pgprot) \
({ pte_t __pte;
pte_val(__pte) = physpage + pgprot_val(pgprot
); __pte; })
({ pte_t __pte;
set_pte(&__pte, __pte(physpage + pgprot_val(pgprot))
); __pte; })
extern
inline
pte_t
pte_modify
(
pte_t
pte
,
pgprot_t
newprot
)
{
pte_val
(
pte
)
=
(
pte_val
(
pte
)
&
_PAGE_CHG_MASK
)
|
pgprot_val
(
newprot
);
return
pte
;
}
{
set_pte
(
&
pte
,
__pte
((
pte_val
(
pte
)
&
_PAGE_CHG_MASK
)
|
pgprot_val
(
newprot
))
);
return
pte
;
}
#define page_pte(page) page_pte_prot(page, __pgprot(0))
...
...
include/asm-i386/system.h
View file @
4f412172
...
...
@@ -122,12 +122,62 @@ static inline unsigned long get_limit(unsigned long segment)
#define nop() __asm__ __volatile__ ("nop")
#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
#define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
#define tas(ptr) (xchg((ptr),1))
struct
__xchg_dummy
{
unsigned
long
a
[
100
];
};
#define __xg(x) ((struct __xchg_dummy *)(x))
/*
* The semantics of XCHGCMP8B are a bit strange, this is why
* there is a loop and the loading of %%eax and %%edx has to
* be inside. This inlines well in most cases, the cached
* cost is around ~38 cycles. (in the future we might want
* to do an SIMD/3DNOW!/MMX/FPU 64-bit store here, but that
* might have an implicit FPU-save as a cost, so it's not
* clear which path to go.)
*/
extern
inline
void
__set_64bit
(
unsigned
long
long
*
ptr
,
unsigned
int
low
,
unsigned
int
high
)
{
__asm__
__volatile__
(
"1: movl (%0), %%eax;
movl 4(%0), %%edx;
lock; cmpxchg8b (%0);
jnz 1b"
::
"D"
(
ptr
),
"b"
(
low
),
"c"
(
high
)
:
"ax"
,
"dx"
,
"memory"
);
}
extern
void
inline
__set_64bit_constant
(
unsigned
long
long
*
ptr
,
unsigned
long
long
value
)
{
__set_64bit
(
ptr
,(
unsigned
int
)(
value
),
(
unsigned
int
)((
value
)
>>
32ULL
));
}
#define ll_low(x) *(((unsigned int*)&(x))+0)
#define ll_high(x) *(((unsigned int*)&(x))+1)
extern
void
inline
__set_64bit_var
(
unsigned
long
long
*
ptr
,
unsigned
long
long
value
)
{
__set_64bit
(
ptr
,
ll_low
(
value
),
ll_high
(
value
));
}
#define set_64bit(ptr,value) \
(__builtin_constant_p(value) ? \
__set_64bit_constant(ptr, value) : \
__set_64bit_var(ptr, value) )
#define _set_64bit(ptr,value) \
(__builtin_constant_p(value) ? \
__set_64bit(ptr, (unsigned int)(value), (unsigned int)((value)>>32ULL) ) : \
__set_64bit(ptr, ll_low(value), ll_high(value)) )
/*
* Note: no "lock" prefix even on SMP: xchg always implies lock anyway
* Note 2: xchg has side effect, so that attribute volatile is necessary,
...
...
include/asm-ppc/pgalloc.h
View file @
4f412172
#ifndef _PPC_PGALLOC_H
#define _PPC_PGALLOC_H
#include <linux/config.h>
#include <linux/threads.h>
#include <asm/processor.h>
...
...
include/linux/ntfs_fs_sb.h
View file @
4f412172
...
...
@@ -26,6 +26,7 @@ struct ntfs_sb_info{
int
clusterfactor
;
int
clustersize
;
int
mft_recordsize
;
int
mft_recordbits
;
int
mft_clusters_per_record
;
int
index_recordsize
;
int
index_clusters_per_record
;
...
...
net/core/dev.c
View file @
4f412172
...
...
@@ -1323,8 +1323,9 @@ static int sprintf_wireless_stats(char *buffer, struct net_device *dev)
int
size
;
if
(
stats
!=
(
struct
iw_statistics
*
)
NULL
)
{
size
=
sprintf
(
buffer
,
"%6s: %0
2x %3d%c %3d%c %3d%c %5d %5d %5
d
\n
"
,
"%6s: %0
4x %3d%c %3d%c %3d%c %6d %6d %6
d
\n
"
,
dev
->
name
,
stats
->
status
,
stats
->
qual
.
qual
,
...
...
@@ -1336,6 +1337,8 @@ static int sprintf_wireless_stats(char *buffer, struct net_device *dev)
stats
->
discard
.
nwid
,
stats
->
discard
.
code
,
stats
->
discard
.
misc
);
stats
->
qual
.
updated
=
0
;
}
else
size
=
0
;
...
...
@@ -1357,8 +1360,9 @@ static int dev_get_wireless_info(char * buffer, char **start, off_t offset,
struct
net_device
*
dev
;
size
=
sprintf
(
buffer
,
"Inter-|sta| Quality | Discarded packets
\n
"
" face |tus|link level noise| nwid crypt misc
\n
"
);
"Inter-| sta-| Quality | Discarded packets
\n
"
" face | tus | link level noise | nwid crypt misc
\n
"
);
pos
+=
size
;
len
+=
size
;
...
...
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