From 0c8b971ebb21dc33271c38d17fd58b8072009dc5 Mon Sep 17 00:00:00 2001 From: Peter Missel Date: Sun, 1 May 2005 08:59:05 -0700 Subject: [PATCH] LifeView FlyTV Platinum FM: Remote Control support Subject says it ... this card's IR microcontroller design and attachment are compatible to the company's previous designs, so the patch was as simple as it gets. DESC LifeView FlyTV Platinum FM: GPIO usage EDESC From: Peter Missel This is take two of a patch that should have appeared two days ago, before yesterday's "remote control" patch for the same card. This patch sets unconnected GPIO to Output to keep them from floating (just good driver writing practice, being nice to the chip), and uses GPIO16 to switch TV vs. FM - this pin switches inputs onto the tuner, as well as the audio output from the tuner into the 7135 SIF input. Consequently, FM radio support is being un-commented because it's now working (sort of, see below). These two patches get the card almost fully operational; there appears to be a bug in tda8290.c remaining that puts an offset onto the tuned frequency in FM radio mode. We're investigating. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/video/saa7134/saa7134-cards.c | 1 + drivers/media/video/saa7134/saa7134-input.c | 1 + 2 files changed, 2 insertions(+) (limited to 'drivers/media/video') diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 180d3175ea5b..cfe4b57dbd6c 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c @@ -1948,6 +1948,7 @@ int saa7134_board_init1(struct saa7134_dev *dev) dev->has_remote = 1; board_flyvideo(dev); break; + case SAA7134_BOARD_FLYTVPLATINUM_FM: case SAA7134_BOARD_CINERGY400: case SAA7134_BOARD_CINERGY600: case SAA7134_BOARD_CINERGY600_MK3: diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c index 727d437e07df..ca50cf531f20 100644 --- a/drivers/media/video/saa7134/saa7134-input.c +++ b/drivers/media/video/saa7134/saa7134-input.c @@ -379,6 +379,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) switch (dev->board) { case SAA7134_BOARD_FLYVIDEO2000: case SAA7134_BOARD_FLYVIDEO3000: + case SAA7134_BOARD_FLYTVPLATINUM_FM: ir_codes = flyvideo_codes; mask_keycode = 0xEC00000; mask_keydown = 0x0040000; -- cgit v1.2.3-59-g8ed1b From 6c9e7376bed151d1655c12d2d5f5cc96bfb83dbd Mon Sep 17 00:00:00 2001 From: Peter Missel Date: Sun, 1 May 2005 08:59:05 -0700 Subject: [PATCH] LifeView FlyTV Platinum FM: GPIO usage This is take two of a patch that should have appeared two days ago, before yesterday's "remote control" patch for the same card. This patch sets unconnected GPIO to Output to keep them from floating (just good driver writing practice, being nice to the chip), and uses GPIO16 to switch TV vs. FM - this pin switches inputs onto the tuner, as well as the audio output from the tuner into the 7135 SIF input. Consequently, FM radio support is being un-commented because it's now working (sort of, see below). These two patches get the card almost fully operational; there appears to be a bug in tda8290.c remaining that puts an offset onto the tuned frequency in FM radio mode. We're investigating. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/video/saa7134/saa7134-cards.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'drivers/media/video') diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index cfe4b57dbd6c..72a7b2466143 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c @@ -183,12 +183,12 @@ struct saa7134_board saa7134_boards[] = { .name = "LifeView FlyTV Platinum FM", .audio_clock = 0x00200000, .tuner_type = TUNER_PHILIPS_TDA8290, -// .gpiomask = 0xe000, + .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */ .inputs = {{ .name = name_tv, .vmux = 1, .amux = TV, -// .gpio = 0x0000, + .gpio = 0x10000, /* GP16=1 selects TV input */ .tv = 1, },{ /* .name = name_tv_mono, @@ -212,12 +212,12 @@ struct saa7134_board saa7134_boards[] = { .amux = LINE2, // .gpio = 0x4000, }}, -/* .radio = { + .radio = { .name = name_radio, - .amux = LINE2, - .gpio = 0x2000, + .amux = TV, + .gpio = 0x00000, /* GP16=0 selects FM radio antenna */ }, -*/ }, + }, [SAA7134_BOARD_EMPRESS] = { /* "Gert Vervoort" */ .name = "EMPRESS", -- cgit v1.2.3-59-g8ed1b From 1622c3fcf4c1c6c8267938f366ecd2a348d67d93 Mon Sep 17 00:00:00 2001 From: Gerd Knorr Date: Sun, 1 May 2005 08:59:19 -0700 Subject: [PATCH] cx88-dvb oops fix Fixup error path, without that one the driver kills the machine by oopsing in the IRQ handler in case the frontend initialization fails. Signed-off-by: Gerd Knorr Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/video/cx88/cx88-dvb.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'drivers/media/video') diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index bc6f18c45357..84d17435f503 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c @@ -243,10 +243,8 @@ static int dvb_register(struct cx8802_dev *dev) break; #endif default: - printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n" - "%s: you might want to look out for patches here:\n" - "%s: http://dl.bytesex.org/patches/\n", - dev->core->name, dev->core->name, dev->core->name); + printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", + dev->core->name); break; } if (NULL == dev->dvb.frontend) { @@ -308,9 +306,11 @@ static int __devinit dvb_probe(struct pci_dev *pci_dev, dev); err = dvb_register(dev); if (0 != err) - goto fail_free; + goto fail_fini; return 0; + fail_fini: + cx8802_fini_common(dev); fail_free: kfree(dev); fail_core: -- cgit v1.2.3-59-g8ed1b From 9990d744bea7d28e83c420e2c9d524c7a8a2d136 Mon Sep 17 00:00:00 2001 From: Gerd Knorr Date: Sun, 1 May 2005 08:59:20 -0700 Subject: [PATCH] dvb: cx22702 frontend driver update update cx22702 fe driver, add support for using the dvb pll lib, enable cx22702 support in cx88-dvb. Signed-off-by: Gerd Knorr Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/dvb/frontends/cx22702.c | 15 ++++++++++++++- drivers/media/dvb/frontends/cx22702.h | 3 +++ drivers/media/video/Kconfig | 1 + drivers/media/video/cx88/cx88-dvb.c | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) (limited to 'drivers/media/video') diff --git a/drivers/media/dvb/frontends/cx22702.c b/drivers/media/dvb/frontends/cx22702.c index 1930b513eefa..011860ce36cc 100644 --- a/drivers/media/dvb/frontends/cx22702.c +++ b/drivers/media/dvb/frontends/cx22702.c @@ -32,6 +32,7 @@ #include #include #include "dvb_frontend.h" +#include "dvb-pll.h" #include "cx22702.h" @@ -203,7 +204,19 @@ static int cx22702_set_tps (struct dvb_frontend* fe, struct dvb_frontend_paramet /* set PLL */ cx22702_writereg (state, 0x0D, cx22702_readreg(state,0x0D) &0xfe); - state->config->pll_set(fe, p); + if (state->config->pll_set) { + state->config->pll_set(fe, p); + } else if (state->config->pll_desc) { + u8 pllbuf[4]; + struct i2c_msg msg = { .addr = state->config->pll_address, + .buf = pllbuf, .len = 4 }; + dvb_pll_configure(state->config->pll_desc, pllbuf, + p->frequency, + p->u.ofdm.bandwidth); + i2c_transfer(state->i2c, &msg, 1); + } else { + BUG(); + } cx22702_writereg (state, 0x0D, cx22702_readreg(state,0x0D) | 1); /* set inversion */ diff --git a/drivers/media/dvb/frontends/cx22702.h b/drivers/media/dvb/frontends/cx22702.h index 6e34f997aba2..559fdb906669 100644 --- a/drivers/media/dvb/frontends/cx22702.h +++ b/drivers/media/dvb/frontends/cx22702.h @@ -36,6 +36,9 @@ struct cx22702_config u8 demod_address; /* PLL maintenance */ + u8 pll_address; + struct dvb_pll_desc *pll_desc; + int (*pll_init)(struct dvb_frontend* fe); int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); }; diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index c1b3542dad88..d3dd4228b72d 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig @@ -252,6 +252,7 @@ config VIDEO_SAA7134_DVB depends on VIDEO_SAA7134 && DVB_CORE select VIDEO_BUF_DVB select DVB_MT352 + select DVB_CX22702 ---help--- This adds support for DVB cards based on the Philips saa7134 chip. diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 84d17435f503..1ca37315066e 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c @@ -31,7 +31,7 @@ #include /* those two frontends need merging via linuxtv cvs ... */ -#define HAVE_CX22702 0 +#define HAVE_CX22702 1 #define HAVE_OR51132 1 #include "cx88.h" -- cgit v1.2.3-59-g8ed1b From faf8b24968ce6392ea68d9afc7de1ffbc38c1f6c Mon Sep 17 00:00:00 2001 From: Gerd Knorr Date: Sun, 1 May 2005 08:59:20 -0700 Subject: [PATCH] v4l: msp3400 update msp3400 update: Fix and enable "simpler" mode, some other minor fixes. Signed-off-by: Gerd Knorr Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/video/msp3400.c | 28 ++++++++++++++++++---------- drivers/media/video/tvaudio.c | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'drivers/media/video') diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c index c97df705df5e..7fbb8581a87d 100644 --- a/drivers/media/video/msp3400.c +++ b/drivers/media/video/msp3400.c @@ -380,7 +380,9 @@ static void msp3400c_setvolume(struct i2c_client *client, int val = 0, bal = 0; if (!muted) { - val = (volume * 0x7F / 65535) << 8; + /* 0x7f instead if 0x73 here has sound quality issues, + * probably due to overmodulation + clipping ... */ + val = (volume * 0x73 / 65535) << 8; } if (val) { bal = (balance / 256) - 128; @@ -997,7 +999,13 @@ static int msp34xx_modus(int norm) { switch (norm) { case VIDEO_MODE_PAL: +#if 1 + /* experimental: not sure this works with all chip versions */ + return 0x7003; +#else + /* previous value, try this if it breaks ... */ return 0x1003; +#endif case VIDEO_MODE_NTSC: /* BTSC */ return 0x2003; case VIDEO_MODE_SECAM: @@ -1264,6 +1272,7 @@ static int msp34xxg_thread(void *data) int val, std, i; printk("msp34xxg: daemon started\n"); + msp->source = 1; /* default */ for (;;) { d2printk(KERN_DEBUG "msp34xxg: thread: sleep\n"); msp34xx_sleep(msp,-1); @@ -1334,8 +1343,9 @@ static void msp34xxg_set_source(struct i2c_client *client, int source) /* fix matrix mode to stereo and let the msp choose what * to output according to 'source', as recommended + * for MONO (source==0) downmixing set bit[7:0] to 0x30 */ - int value = (source&0x07)<<8|(source==0 ? 0x00:0x20); + int value = (source&0x07)<<8|(source==0 ? 0x30:0x20); dprintk("msp34xxg: set source to %d (0x%x)\n", source, value); msp3400c_write(client, I2C_MSP3400C_DFP, @@ -1359,7 +1369,7 @@ static void msp34xxg_set_source(struct i2c_client *client, int source) msp3400c_write(client, I2C_MSP3400C_DEM, 0x22, /* a2 threshold for stereo/bilingual */ - source==0 ? 0x7f0:stereo_threshold); + stereo_threshold); msp->source=source; } @@ -1394,7 +1404,7 @@ static void msp34xxg_detect_stereo(struct i2c_client *client) static void msp34xxg_set_audmode(struct i2c_client *client, int audmode) { struct msp3400c *msp = i2c_get_clientdata(client); - int source = 0; + int source; switch (audmode) { case V4L2_TUNER_MODE_MONO: @@ -1410,9 +1420,10 @@ static void msp34xxg_set_audmode(struct i2c_client *client, int audmode) case V4L2_TUNER_MODE_LANG2: source=4; /* stereo or B */ break; - default: /* doing nothing: a safe, sane default */ + default: audmode = 0; - return; + source = 1; + break; } msp->audmode = audmode; msp34xxg_set_source(client, source); @@ -1514,12 +1525,9 @@ static int msp_attach(struct i2c_adapter *adap, int addr, int kind) msp->opmode = opmode; if (OPMODE_AUTO == msp->opmode) { -#if 0 /* seems to work for ivtv only, disable by default for now ... */ if (HAVE_SIMPLER(msp)) msp->opmode = OPMODE_SIMPLER; - else -#endif - if (HAVE_SIMPLE(msp)) + else if (HAVE_SIMPLE(msp)) msp->opmode = OPMODE_SIMPLE; else msp->opmode = OPMODE_MANUAL; diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c index 065eb4007b1d..80dc34f18c2c 100644 --- a/drivers/media/video/tvaudio.c +++ b/drivers/media/video/tvaudio.c @@ -991,7 +991,7 @@ static int tda9874a_initialize(struct CHIPSTATE *chip) { if (tda9874a_SIF > 2) tda9874a_SIF = 1; - if (tda9874a_STD >= 8) + if (tda9874a_STD > 8) tda9874a_STD = 0; if(tda9874a_AMSEL > 1) tda9874a_AMSEL = 0; -- cgit v1.2.3-59-g8ed1b From 10e92060295ded7b8feac1ee57bb2135ea9ac207 Mon Sep 17 00:00:00 2001 From: Peter Missel Date: Sun, 1 May 2005 08:59:21 -0700 Subject: [PATCH] saa7134: Add OEM version of already supported card Add device table support for the LR214WF card. The driver will say it's a FlyTV, simply because the name strings are stored with the card design data, not the device ID data. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/media/video/saa7134/saa7134-cards.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'drivers/media/video') diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 72a7b2466143..c51eb7f078d3 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c @@ -1628,9 +1628,15 @@ struct pci_device_id saa7134_pci_tbl[] = { },{ .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7133, - .subvendor = 0x5168, + .subvendor = 0x5168, /* Animation Technologies (LifeView) */ .subdevice = 0x0214, /* Standard PCI, LR214WF */ .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, + },{ + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7133, + .subvendor = 0x1489, /* KYE */ + .subdevice = 0x0214, /* Genius VideoWonder ProTV */ + .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */ },{ .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7134, -- cgit v1.2.3-59-g8ed1b From 408b664a7d394a5e4315fbd14aca49b042cb2b08 Mon Sep 17 00:00:00 2001 From: Adrian Bunk Date: Sun, 1 May 2005 08:59:29 -0700 Subject: [PATCH] make lots of things static Another large rollup of various patches from Adrian which make things static where they were needlessly exported. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- arch/i386/kernel/cpu/mtrr/generic.c | 4 ++-- arch/x86_64/kernel/early_printk.c | 2 +- drivers/char/agp/ali-agp.c | 4 ++-- drivers/char/agp/amd-k7-agp.c | 2 +- drivers/char/agp/amd64-agp.c | 2 +- drivers/char/agp/ati-agp.c | 2 +- drivers/char/agp/backend.c | 4 ++-- drivers/char/agp/efficeon-agp.c | 2 +- drivers/char/agp/frontend.c | 6 +++--- drivers/char/agp/nvidia-agp.c | 2 +- drivers/char/agp/sis-agp.c | 2 +- drivers/char/agp/sworks-agp.c | 2 +- drivers/char/agp/via-agp.c | 4 ++-- drivers/char/rio/rio_linux.c | 2 +- drivers/char/stallion.c | 4 ++-- drivers/isdn/capi/capi.c | 10 +++++----- drivers/isdn/capi/kcapi_proc.c | 10 +++++----- drivers/isdn/divert/isdn_divert.c | 10 +++++----- drivers/media/video/bttv-driver.c | 6 +++--- drivers/media/video/cx88/cx88-core.c | 5 ++--- drivers/media/video/cx88/cx88-dvb.c | 4 ++-- drivers/media/video/cx88/cx88-i2c.c | 4 ++-- drivers/media/video/cx88/cx88-vbi.c | 6 +++--- drivers/media/video/cx88/cx88-video.c | 12 ++++++------ drivers/media/video/cx88/cx88.h | 4 ---- drivers/media/video/saa7134/saa7134-dvb.c | 2 +- drivers/scsi/pas16.c | 6 +++--- drivers/serial/8250.c | 2 +- drivers/serial/jsm/jsm.h | 1 - drivers/serial/jsm/jsm_neo.c | 2 +- drivers/serial/jsm/jsm_tty.c | 4 +++- include/linux/sched.h | 1 - kernel/exit.c | 4 +++- 33 files changed, 67 insertions(+), 70 deletions(-) (limited to 'drivers/media/video') diff --git a/arch/i386/kernel/cpu/mtrr/generic.c b/arch/i386/kernel/cpu/mtrr/generic.c index 9f7a7ea6388d..f468a979e9aa 100644 --- a/arch/i386/kernel/cpu/mtrr/generic.c +++ b/arch/i386/kernel/cpu/mtrr/generic.c @@ -124,8 +124,8 @@ int generic_get_free_region(unsigned long base, unsigned long size) return -ENOSPC; } -void generic_get_mtrr(unsigned int reg, unsigned long *base, - unsigned int *size, mtrr_type * type) +static void generic_get_mtrr(unsigned int reg, unsigned long *base, + unsigned int *size, mtrr_type * type) { unsigned int mask_lo, mask_hi, base_lo, base_hi; diff --git a/arch/x86_64/kernel/early_printk.c b/arch/x86_64/kernel/early_printk.c index 750bcd0655dc..e3a19e8ebbf8 100644 --- a/arch/x86_64/kernel/early_printk.c +++ b/arch/x86_64/kernel/early_printk.c @@ -60,7 +60,7 @@ static struct console early_vga_console = { /* Serial functions loosely based on a similar package from Klaus P. Gerlicher */ -int early_serial_base = 0x3f8; /* ttyS0 */ +static int early_serial_base = 0x3f8; /* ttyS0 */ #define XMTRDY 0x20 diff --git a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c index c86a22c5499b..0212febda654 100644 --- a/drivers/char/agp/ali-agp.c +++ b/drivers/char/agp/ali-agp.c @@ -192,7 +192,7 @@ static struct aper_size_info_32 ali_generic_sizes[7] = {4, 1024, 0, 3} }; -struct agp_bridge_driver ali_generic_bridge = { +static struct agp_bridge_driver ali_generic_bridge = { .owner = THIS_MODULE, .aperture_sizes = ali_generic_sizes, .size_type = U32_APER_SIZE, @@ -215,7 +215,7 @@ struct agp_bridge_driver ali_generic_bridge = { .agp_destroy_page = ali_destroy_page, }; -struct agp_bridge_driver ali_m1541_bridge = { +static struct agp_bridge_driver ali_m1541_bridge = { .owner = THIS_MODULE, .aperture_sizes = ali_generic_sizes, .size_type = U32_APER_SIZE, diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index f1ea87ea6b65..e62a3c2c44a9 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c @@ -358,7 +358,7 @@ static struct gatt_mask amd_irongate_masks[] = {.mask = 1, .type = 0} }; -struct agp_bridge_driver amd_irongate_driver = { +static struct agp_bridge_driver amd_irongate_driver = { .owner = THIS_MODULE, .aperture_sizes = amd_irongate_sizes, .size_type = LVL2_APER_SIZE, diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index 905f0629c44f..399c042f68f0 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c @@ -243,7 +243,7 @@ static void amd64_cleanup(void) } -struct agp_bridge_driver amd_8151_driver = { +static struct agp_bridge_driver amd_8151_driver = { .owner = THIS_MODULE, .aperture_sizes = amd_8151_sizes, .size_type = U32_APER_SIZE, diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c index 757dde006fc9..a65f8827c283 100644 --- a/drivers/char/agp/ati-agp.c +++ b/drivers/char/agp/ati-agp.c @@ -393,7 +393,7 @@ static int ati_free_gatt_table(struct agp_bridge_data *bridge) return 0; } -struct agp_bridge_driver ati_generic_bridge = { +static struct agp_bridge_driver ati_generic_bridge = { .owner = THIS_MODULE, .aperture_sizes = ati_generic_sizes, .size_type = LVL2_APER_SIZE, diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index c3442f3c6480..2f3dfb63bdc6 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c @@ -97,7 +97,7 @@ void agp_backend_release(struct agp_bridge_data *bridge) EXPORT_SYMBOL(agp_backend_release); -struct { int mem, agp; } maxes_table[] = { +static struct { int mem, agp; } maxes_table[] = { {0, 0}, {32, 4}, {64, 28}, @@ -322,7 +322,7 @@ static int __init agp_init(void) return 0; } -void __exit agp_exit(void) +static void __exit agp_exit(void) { } diff --git a/drivers/char/agp/efficeon-agp.c b/drivers/char/agp/efficeon-agp.c index 2a87cecdc912..1383c3165ea1 100644 --- a/drivers/char/agp/efficeon-agp.c +++ b/drivers/char/agp/efficeon-agp.c @@ -303,7 +303,7 @@ static int efficeon_remove_memory(struct agp_memory * mem, off_t pg_start, int t } -struct agp_bridge_driver efficeon_driver = { +static struct agp_bridge_driver efficeon_driver = { .owner = THIS_MODULE, .aperture_sizes = efficeon_generic_sizes, .size_type = LVL2_APER_SIZE, diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c index f633623ac802..3dfb6648547b 100644 --- a/drivers/char/agp/frontend.c +++ b/drivers/char/agp/frontend.c @@ -235,7 +235,7 @@ static void agp_insert_into_pool(struct agp_memory * temp) /* File private list routines */ -struct agp_file_private *agp_find_private(pid_t pid) +static struct agp_file_private *agp_find_private(pid_t pid) { struct agp_file_private *curr; @@ -250,7 +250,7 @@ struct agp_file_private *agp_find_private(pid_t pid) return NULL; } -void agp_insert_file_private(struct agp_file_private * priv) +static void agp_insert_file_private(struct agp_file_private * priv) { struct agp_file_private *prev; @@ -262,7 +262,7 @@ void agp_insert_file_private(struct agp_file_private * priv) agp_fe.file_priv_list = priv; } -void agp_remove_file_private(struct agp_file_private * priv) +static void agp_remove_file_private(struct agp_file_private * priv) { struct agp_file_private *next; struct agp_file_private *prev; diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c index 4f7a3e8bc919..80dafa3030bd 100644 --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -288,7 +288,7 @@ static struct gatt_mask nvidia_generic_masks[] = }; -struct agp_bridge_driver nvidia_driver = { +static struct agp_bridge_driver nvidia_driver = { .owner = THIS_MODULE, .aperture_sizes = nvidia_generic_sizes, .size_type = U8_APER_SIZE, diff --git a/drivers/char/agp/sis-agp.c b/drivers/char/agp/sis-agp.c index cfccacb2a647..ebc05554045c 100644 --- a/drivers/char/agp/sis-agp.c +++ b/drivers/char/agp/sis-agp.c @@ -119,7 +119,7 @@ static struct aper_size_info_8 sis_generic_sizes[7] = {4, 1024, 0, 3} }; -struct agp_bridge_driver sis_driver = { +static struct agp_bridge_driver sis_driver = { .owner = THIS_MODULE, .aperture_sizes = sis_generic_sizes, .size_type = U8_APER_SIZE, diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c index bb338d9134e0..10c23302dd84 100644 --- a/drivers/char/agp/sworks-agp.c +++ b/drivers/char/agp/sworks-agp.c @@ -409,7 +409,7 @@ static void serverworks_agp_enable(struct agp_bridge_data *bridge, u32 mode) agp_device_command(command, 0); } -struct agp_bridge_driver sworks_driver = { +static struct agp_bridge_driver sworks_driver = { .owner = THIS_MODULE, .aperture_sizes = serverworks_sizes, .size_type = LVL2_APER_SIZE, diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c index e1451dd9b6a7..c847df575cf5 100644 --- a/drivers/char/agp/via-agp.c +++ b/drivers/char/agp/via-agp.c @@ -170,7 +170,7 @@ static void via_tlbflush_agp3(struct agp_memory *mem) } -struct agp_bridge_driver via_agp3_driver = { +static struct agp_bridge_driver via_agp3_driver = { .owner = THIS_MODULE, .aperture_sizes = agp3_generic_sizes, .size_type = U8_APER_SIZE, @@ -193,7 +193,7 @@ struct agp_bridge_driver via_agp3_driver = { .agp_destroy_page = agp_generic_destroy_page, }; -struct agp_bridge_driver via_driver = { +static struct agp_bridge_driver via_driver = { .owner = THIS_MODULE, .aperture_sizes = via_generic_sizes, .size_type = U8_APER_SIZE, diff --git a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c index a91ae271cf0a..763893e289b3 100644 --- a/drivers/char/rio/rio_linux.c +++ b/drivers/char/rio/rio_linux.c @@ -221,7 +221,7 @@ static int rio_probe_addrs[]= {0xc0000, 0xd0000, 0xe0000}; /* Set the mask to all-ones. This alas, only supports 32 interrupts. Some architectures may need more. -- Changed to LONG to support up to 64 bits on 64bit architectures. -- REW 20/06/99 */ -long rio_irqmask = -1; +static long rio_irqmask = -1; MODULE_AUTHOR("Rogier Wolff , Patrick van de Lageweg "); MODULE_DESCRIPTION("RIO driver"); diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index de166608c59e..b8899f560b5e 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -466,7 +466,7 @@ static int stl_parsebrd(stlconf_t *confp, char **argp); static unsigned long stl_atol(char *str); -int stl_init(void); +static int stl_init(void); static int stl_open(struct tty_struct *tty, struct file *filp); static void stl_close(struct tty_struct *tty, struct file *filp); static int stl_write(struct tty_struct *tty, const unsigned char *buf, int count); @@ -3063,7 +3063,7 @@ static struct tty_operations stl_ops = { /*****************************************************************************/ -int __init stl_init(void) +static int __init stl_init(void) { int i; printk(KERN_INFO "%s: version %s\n", stl_drvtitle, stl_drvversion); diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index 06163538bb20..12dee8e9fbbe 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -60,12 +60,12 @@ MODULE_LICENSE("GPL"); static struct class_simple *capi_class; -int capi_major = 68; /* allocated */ +static int capi_major = 68; /* allocated */ #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE #define CAPINC_NR_PORTS 32 #define CAPINC_MAX_PORTS 256 -int capi_ttymajor = 191; -int capi_ttyminors = CAPINC_NR_PORTS; +static int capi_ttymajor = 191; +static int capi_ttyminors = CAPINC_NR_PORTS; #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */ module_param_named(major, capi_major, uint, 0); @@ -268,7 +268,7 @@ static void capiminor_free(struct capiminor *mp) kfree(mp); } -struct capiminor *capiminor_find(unsigned int minor) +static struct capiminor *capiminor_find(unsigned int minor) { struct list_head *l; struct capiminor *p = NULL; @@ -1166,7 +1166,7 @@ static int capinc_tty_write_room(struct tty_struct *tty) return room; } -int capinc_tty_chars_in_buffer(struct tty_struct *tty) +static int capinc_tty_chars_in_buffer(struct tty_struct *tty) { struct capiminor *mp = (struct capiminor *)tty->driver_data; if (!mp || !mp->nccip) { diff --git a/drivers/isdn/capi/kcapi_proc.c b/drivers/isdn/capi/kcapi_proc.c index 16dc5418ff41..2cc8b27e4c3b 100644 --- a/drivers/isdn/capi/kcapi_proc.c +++ b/drivers/isdn/capi/kcapi_proc.c @@ -89,14 +89,14 @@ static int contrstats_show(struct seq_file *seq, void *v) return 0; } -struct seq_operations seq_controller_ops = { +static struct seq_operations seq_controller_ops = { .start = controller_start, .next = controller_next, .stop = controller_stop, .show = controller_show, }; -struct seq_operations seq_contrstats_ops = { +static struct seq_operations seq_contrstats_ops = { .start = controller_start, .next = controller_next, .stop = controller_stop, @@ -192,14 +192,14 @@ applstats_show(struct seq_file *seq, void *v) return 0; } -struct seq_operations seq_applications_ops = { +static struct seq_operations seq_applications_ops = { .start = applications_start, .next = applications_next, .stop = applications_stop, .show = applications_show, }; -struct seq_operations seq_applstats_ops = { +static struct seq_operations seq_applstats_ops = { .start = applications_start, .next = applications_next, .stop = applications_stop, @@ -287,7 +287,7 @@ static int capi_driver_show(struct seq_file *seq, void *v) return 0; } -struct seq_operations seq_capi_driver_ops = { +static struct seq_operations seq_capi_driver_ops = { .start = capi_driver_start, .next = capi_driver_next, .stop = capi_driver_stop, diff --git a/drivers/isdn/divert/isdn_divert.c b/drivers/isdn/divert/isdn_divert.c index 1eb112213f0c..0bfd698726a6 100644 --- a/drivers/isdn/divert/isdn_divert.c +++ b/drivers/isdn/divert/isdn_divert.c @@ -383,7 +383,7 @@ divert_rule *getruleptr(int idx) /*************************************************/ /* called from common module on an incoming call */ /*************************************************/ -int isdn_divert_icall(isdn_ctrl *ic) +static int isdn_divert_icall(isdn_ctrl *ic) { int retval = 0; unsigned long flags; struct call_struc *cs = NULL; @@ -552,7 +552,7 @@ void deleteprocs(void) /****************************************************/ /* put a address including address type into buffer */ /****************************************************/ -int put_address(char *st, u_char *p, int len) +static int put_address(char *st, u_char *p, int len) { u_char retval = 0; u_char adr_typ = 0; /* network standard */ @@ -595,7 +595,7 @@ int put_address(char *st, u_char *p, int len) /*************************************/ /* report a succesfull interrogation */ /*************************************/ -int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) +static int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) { char *src = ic->parm.dss1_io.data; int restlen = ic->parm.dss1_io.datalen; int cnt = 1; @@ -689,7 +689,7 @@ int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) /*********************************************/ /* callback for protocol specific extensions */ /*********************************************/ -int prot_stat_callback(isdn_ctrl *ic) +static int prot_stat_callback(isdn_ctrl *ic) { struct call_struc *cs, *cs1; int i; unsigned long flags; @@ -781,7 +781,7 @@ int prot_stat_callback(isdn_ctrl *ic) /***************************/ /* status callback from HL */ /***************************/ -int isdn_divert_stat_callback(isdn_ctrl *ic) +static int isdn_divert_stat_callback(isdn_ctrl *ic) { struct call_struc *cs, *cs1; unsigned long flags; int retval; diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c index c13f222fe6bd..033cc5498f23 100644 --- a/drivers/media/video/bttv-driver.c +++ b/drivers/media/video/bttv-driver.c @@ -3169,7 +3169,7 @@ static struct video_device radio_template = /* ----------------------------------------------------------------------- */ /* some debug code */ -int bttv_risc_decode(u32 risc) +static int bttv_risc_decode(u32 risc) { static char *instr[16] = { [ BT848_RISC_WRITE >> 28 ] = "write", @@ -3206,8 +3206,8 @@ int bttv_risc_decode(u32 risc) return incr[risc >> 28] ? incr[risc >> 28] : 1; } -void bttv_risc_disasm(struct bttv *btv, - struct btcx_riscmem *risc) +static void bttv_risc_disasm(struct bttv *btv, + struct btcx_riscmem *risc) { unsigned int i,j,n; diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c index 26a6138015cb..1ff79b5a8835 100644 --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c @@ -429,7 +429,7 @@ int cx88_sram_channel_setup(struct cx88_core *core, /* ------------------------------------------------------------------ */ /* debug helper code */ -int cx88_risc_decode(u32 risc) +static int cx88_risc_decode(u32 risc) { static char *instr[16] = { [ RISC_SYNC >> 28 ] = "sync", @@ -542,7 +542,7 @@ void cx88_sram_channel_dump(struct cx88_core *core, core->name,cx_read(ch->cnt2_reg)); } -char *cx88_pci_irqs[32] = { +static char *cx88_pci_irqs[32] = { "vid", "aud", "ts", "vip", "hst", "5", "6", "tm1", "src_dma", "dst_dma", "risc_rd_err", "risc_wr_err", "brdg_err", "src_dma_err", "dst_dma_err", "ipb_dma_err", @@ -1206,7 +1206,6 @@ void cx88_core_put(struct cx88_core *core, struct pci_dev *pci) /* ------------------------------------------------------------------ */ EXPORT_SYMBOL(cx88_print_ioctl); -EXPORT_SYMBOL(cx88_pci_irqs); EXPORT_SYMBOL(cx88_vid_irqs); EXPORT_SYMBOL(cx88_mpeg_irqs); EXPORT_SYMBOL(cx88_print_irqbits); diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 1ca37315066e..9d15d3d5a2b7 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c @@ -91,7 +91,7 @@ static void dvb_buf_release(struct videobuf_queue *q, struct videobuf_buffer *vb cx88_free_buffer(dev->pci, (struct cx88_buffer*)vb); } -struct videobuf_queue_ops dvb_qops = { +static struct videobuf_queue_ops dvb_qops = { .buf_setup = dvb_buf_setup, .buf_prepare = dvb_buf_prepare, .buf_queue = dvb_buf_queue, @@ -191,7 +191,7 @@ static int or51132_set_ts_param(struct dvb_frontend* fe, return 0; } -struct or51132_config pchdtv_hd3000 = { +static struct or51132_config pchdtv_hd3000 = { .demod_address = 0x15, .pll_address = 0x61, .pll_desc = &dvb_pll_thomson_dtt7610, diff --git a/drivers/media/video/cx88/cx88-i2c.c b/drivers/media/video/cx88/cx88-i2c.c index 60800172c026..0725b1288f4f 100644 --- a/drivers/media/video/cx88/cx88-i2c.c +++ b/drivers/media/video/cx88/cx88-i2c.c @@ -45,7 +45,7 @@ MODULE_PARM_DESC(i2c_scan,"scan i2c bus at insmod time"); /* ----------------------------------------------------------------------- */ -void cx8800_bit_setscl(void *data, int state) +static void cx8800_bit_setscl(void *data, int state) { struct cx88_core *core = data; @@ -57,7 +57,7 @@ void cx8800_bit_setscl(void *data, int state) cx_read(MO_I2C); } -void cx8800_bit_setsda(void *data, int state) +static void cx8800_bit_setsda(void *data, int state) { struct cx88_core *core = data; diff --git a/drivers/media/video/cx88/cx88-vbi.c b/drivers/media/video/cx88/cx88-vbi.c index 471e508b0746..0584ff476387 100644 --- a/drivers/media/video/cx88/cx88-vbi.c +++ b/drivers/media/video/cx88/cx88-vbi.c @@ -46,9 +46,9 @@ void cx8800_vbi_fmt(struct cx8800_dev *dev, struct v4l2_format *f) } } -int cx8800_start_vbi_dma(struct cx8800_dev *dev, - struct cx88_dmaqueue *q, - struct cx88_buffer *buf) +static int cx8800_start_vbi_dma(struct cx8800_dev *dev, + struct cx88_dmaqueue *q, + struct cx88_buffer *buf) { struct cx88_core *core = dev->core; diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index 701f594e1816..d1f5c92f0ce5 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c @@ -325,7 +325,7 @@ static struct cx88_ctrl cx8800_ctls[] = { .shift = 0, } }; -const int CX8800_CTLS = ARRAY_SIZE(cx8800_ctls); +static const int CX8800_CTLS = ARRAY_SIZE(cx8800_ctls); /* ------------------------------------------------------------------- */ /* resource management */ @@ -665,7 +665,7 @@ static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb) cx88_free_buffer(fh->dev->pci,buf); } -struct videobuf_queue_ops cx8800_video_qops = { +static struct videobuf_queue_ops cx8800_video_qops = { .buf_setup = buffer_setup, .buf_prepare = buffer_prepare, .buf_queue = buffer_queue, @@ -1924,7 +1924,7 @@ static struct file_operations video_fops = .llseek = no_llseek, }; -struct video_device cx8800_video_template = +static struct video_device cx8800_video_template = { .name = "cx8800-video", .type = VID_TYPE_CAPTURE|VID_TYPE_TUNER|VID_TYPE_SCALES, @@ -1933,7 +1933,7 @@ struct video_device cx8800_video_template = .minor = -1, }; -struct video_device cx8800_vbi_template = +static struct video_device cx8800_vbi_template = { .name = "cx8800-vbi", .type = VID_TYPE_TELETEXT|VID_TYPE_TUNER, @@ -1951,7 +1951,7 @@ static struct file_operations radio_fops = .llseek = no_llseek, }; -struct video_device cx8800_radio_template = +static struct video_device cx8800_radio_template = { .name = "cx8800-radio", .type = VID_TYPE_TUNER, @@ -2226,7 +2226,7 @@ static int cx8800_resume(struct pci_dev *pci_dev) /* ----------------------------------------------------------- */ -struct pci_device_id cx8800_pci_tbl[] = { +static struct pci_device_id cx8800_pci_tbl[] = { { .vendor = 0x14f1, .device = 0x8800, diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index b351d9eae615..88eaaaba5ad8 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h @@ -420,7 +420,6 @@ struct cx8802_dev { /* ----------------------------------------------------------- */ /* cx88-core.c */ -extern char *cx88_pci_irqs[32]; extern char *cx88_vid_irqs[32]; extern char *cx88_mpeg_irqs[32]; extern void cx88_print_irqbits(char *name, char *tag, char **strings, @@ -472,9 +471,6 @@ extern void cx88_core_put(struct cx88_core *core, /* cx88-vbi.c */ void cx8800_vbi_fmt(struct cx8800_dev *dev, struct v4l2_format *f); -int cx8800_start_vbi_dma(struct cx8800_dev *dev, - struct cx88_dmaqueue *q, - struct cx88_buffer *buf); int cx8800_stop_vbi_dma(struct cx8800_dev *dev); int cx8800_restart_vbi_queue(struct cx8800_dev *dev, struct cx88_dmaqueue *q); diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c index dd4a6c8ee65f..c2873ae029f9 100644 --- a/drivers/media/video/saa7134/saa7134-dvb.c +++ b/drivers/media/video/saa7134/saa7134-dvb.c @@ -172,7 +172,7 @@ static int fe_request_firmware(struct dvb_frontend* fe, return request_firmware(fw, name, &dev->pci->dev); } -struct tda1004x_config medion_cardbus = { +static struct tda1004x_config medion_cardbus = { .demod_address = 0x08, /* not sure this is correct */ .invert = 0, .invert_oclk = 0, diff --git a/drivers/scsi/pas16.c b/drivers/scsi/pas16.c index e70dedb0d0a5..7976947c0322 100644 --- a/drivers/scsi/pas16.c +++ b/drivers/scsi/pas16.c @@ -137,7 +137,7 @@ static unsigned short pas16_addr = 0; static int pas16_irq = 0; -int scsi_irq_translate[] = +static const int scsi_irq_translate[] = { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 0, 10, 11 }; /* The default_irqs array contains values used to set the irq into the @@ -145,7 +145,7 @@ int scsi_irq_translate[] = * irq jumpers on the board). The first value in the array will be * assigned to logical board 0, the next to board 1, etc. */ -int default_irqs[] __initdata = +static int default_irqs[] __initdata = { PAS16_DEFAULT_BOARD_1_IRQ, PAS16_DEFAULT_BOARD_2_IRQ, PAS16_DEFAULT_BOARD_3_IRQ, @@ -177,7 +177,7 @@ static struct base { #define NO_BASES (sizeof (bases) / sizeof (struct base)) -unsigned short pas16_offset[ 8 ] = +static const unsigned short pas16_offset[ 8 ] = { 0x1c00, /* OUTPUT_DATA_REG */ 0x1c01, /* INITIATOR_COMMAND_REG */ diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index 218b69372c0b..0d9358608fdf 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -51,7 +51,7 @@ * share_irqs - whether we pass SA_SHIRQ to request_irq(). This option * is unsafe when used on edge-triggered interrupts. */ -unsigned int share_irqs = SERIAL8250_SHARE_IRQS; +static unsigned int share_irqs = SERIAL8250_SHARE_IRQS; /* * Debugging. diff --git a/drivers/serial/jsm/jsm.h b/drivers/serial/jsm/jsm.h index e0717611c940..777829fa3300 100644 --- a/drivers/serial/jsm/jsm.h +++ b/drivers/serial/jsm/jsm.h @@ -393,7 +393,6 @@ int jsm_tty_init(struct jsm_board *); int jsm_uart_port_init(struct jsm_board *); int jsm_remove_uart_port(struct jsm_board *); void jsm_input(struct jsm_channel *ch); -void jsm_carrier(struct jsm_channel *ch); void jsm_check_queue_flow_control(struct jsm_channel *ch); #endif diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c index 9b79c1ff6c72..3a11a69feb44 100644 --- a/drivers/serial/jsm/jsm_neo.c +++ b/drivers/serial/jsm/jsm_neo.c @@ -688,7 +688,7 @@ static void neo_flush_uart_read(struct jsm_channel *ch) /* * No locks are assumed to be held when calling this function. */ -void neo_clear_break(struct jsm_channel *ch, int force) +static void neo_clear_break(struct jsm_channel *ch, int force) { unsigned long lock_flags; diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c index 24fe76c28833..98de2258fd06 100644 --- a/drivers/serial/jsm/jsm_tty.c +++ b/drivers/serial/jsm/jsm_tty.c @@ -31,6 +31,8 @@ #include "jsm.h" +static void jsm_carrier(struct jsm_channel *ch); + static inline int jsm_get_mstat(struct jsm_channel *ch) { unsigned char mstat; @@ -755,7 +757,7 @@ void jsm_input(struct jsm_channel *ch) jsm_printk(IOCTL, INFO, &ch->ch_bd->pci_dev, "finish\n"); } -void jsm_carrier(struct jsm_channel *ch) +static void jsm_carrier(struct jsm_channel *ch) { struct jsm_board *bd; diff --git a/include/linux/sched.h b/include/linux/sched.h index 8960f99ea128..5f868a588581 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1012,7 +1012,6 @@ extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct extern void flush_thread(void); extern void exit_thread(void); -extern void exit_mm(struct task_struct *); extern void exit_files(struct task_struct *); extern void exit_signal(struct task_struct *); extern void __exit_signal(struct task_struct *); diff --git a/kernel/exit.c b/kernel/exit.c index 419d9d3c4c48..7be283d98983 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -39,6 +39,8 @@ extern struct task_struct *child_reaper; int getrusage(struct task_struct *, int, struct rusage __user *); +static void exit_mm(struct task_struct * tsk); + static void __unhash_process(struct task_struct *p) { nr_threads--; @@ -474,7 +476,7 @@ EXPORT_SYMBOL_GPL(exit_fs); * Turn us into a lazy TLB process if we * aren't already.. */ -void exit_mm(struct task_struct * tsk) +static void exit_mm(struct task_struct * tsk) { struct mm_struct *mm = tsk->mm; -- cgit v1.2.3-59-g8ed1b