Commit Graph

118 Commits

Author SHA1 Message Date
Alfred Perlstein
85f190e4d1 Fixes to make select/poll mpsafe.
Problem:
  selwakeup required calling pfind which would cause lock order
  reversals with the allproc_lock and the per-process filedesc lock.
Solution:
  Instead of recording the pid of the select()'ing process into the
  selinfo structure, actually record a pointer to the thread.  To
  avoid dereferencing a bad address all the selinfo structures that
  are in use by a thread are kept in a list hung off the thread
  (protected by sellock).  When a selwakeup occurs the selinfo is
  removed from that threads list, it is also removed on the way out
  of select or poll where the thread will traverse its list removing
  all the selinfos from its own list.

Problem:
  Previously the PROC_LOCK was used to provide the mutual exclusion
  needed to ensure proper locking, this couldn't work because there
  was a single condvar used for select and poll and condvars can
  only be used with a single mutex.
Solution:
  Introduce a global mutex 'sellock' which is used to provide mutual
  exclusion when recording events to wait on as well as performing
  notification when an event occurs.

Interesting note:
  schedlock is required to manipulate the per-thread TDF_SELECT
  flag, however if given its own field it would not need schedlock,
  also because TDF_SELECT is only manipulated under sellock one
  doesn't actually use schedlock for syncronization, only to protect
  against corruption.

Proc locks are no longer used in select/poll.

Portions contributed by: davidc
2002-03-14 01:32:30 +00:00
Julian Elischer
b40ce4165d KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after:    ha ha ha ha
2001-09-12 08:38:13 +00:00
Mark Murray
fb919e4d5a Undo part of the tangle of having sys/lock.h and sys/mutex.h included in
other "system" header files.

Also help the deprecation of lockmgr.h by making it a sub-include of
sys/lock.h and removing sys/lockmgr.h form kernel .c files.

Sort sys/*.h includes where possible in affected files.

OK'ed by:	bde (with reservations)
2001-05-01 08:13:21 +00:00
John Baldwin
5493ca946e - Lock the process while sending it a signal.
- Attempt to define empty PROC_LOCK/UNLOCK when needed to help keep
  this driver portable.
2001-03-07 03:42:42 +00:00
Roger Hardiman
51c5172097 Upgrade to driver 2.18
Support for new Hauppauge Model 44xxx WinTV Cards
(the ones with no audio mux)

Submitted by:	Christian Gusenbauer <Christian.Gusenbauer@netway.at>
2000-10-31 13:09:56 +00:00
Roger Hardiman
97e1cf9c1b Update to driver 2.17
Fixes bugs in devfs when unloading and reloading
Syncs with NetBSD changes

Submitted by:	Alexander Langer <alex@big.endian.de>
Submitted by:	Thomas Klausner <wiz@netbsd.org>
Submitted by:	Daniel O'Connor" <doconnor@gsoft.com.au>
2000-10-19 07:33:28 +00:00
Poul-Henning Kamp
db7e3af111 Remove unneeded #include <machine/clock.h> 2000-10-15 14:19:01 +00:00
Roger Hardiman
dd11af6637 Update to driver 2.15.
Main change is the addition of the bktr_mem module.

This holds onto the bktr driver's contiguously allocated memory
when the bktr driver is unloaded and reloaded.

This has to be done because it is virtually impossible to get
contiguous memory once a system is running.

Also tidied up the use of SMBUS, added a new Hauppauge tuner type (0x2c)
and a new Flyvideo vendor ID.
2000-09-10 14:34:08 +00:00
Poul-Henning Kamp
db90128160 Avoid the modules madness I inadvertently introduced by making the
cloning infrastructure standard in kern_conf.  Modules are now
the same with or without devfs support.

If you need to detect if devfs is present, in modules or elsewhere,
check the integer variable "devfs_present".

This happily removes an ugly hack from kern/vfs_conf.c.

This forces a rename of the eventhandler and the standard clone
helper function.

Include <sys/eventhandler.h> in <sys/conf.h>: it's a helper #include
like <sys/queue.h>

Remove all #includes of opt_devfs.h they no longer matter.
2000-09-02 19:17:34 +00:00
Roger Hardiman
231b1f331e Update to driver 2.14. Adds new Tuner types for Hauppauge WinTV cards 2000-06-28 15:09:12 +00:00
Roger Hardiman
4dcedbebe2 Update to driver 2.13.
This merges in changes from NetBSD which ensure bktr0
(actually bktr%d) is printed at the start of any output lines.

Submitted by:	Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
2000-06-26 09:41:32 +00:00
Poul-Henning Kamp
3389ae9350 Remove ~25 unneeded #include <sys/conf.h>
Remove ~60 unneeded #include <sys/malloc.h>
2000-04-19 14:58:28 +00:00
Roger Hardiman
f88d1687fb Fix typo in interrupt handling code and fix bug in setting of adelay 2000-04-16 07:50:09 +00:00
Roger Hardiman
2767d675a6 Update to driver 2.11.
Driver now compiles on FreeBSD/Alpha, but still requires testing.
Remove a printf, submitted by Chris D. Faulhaber <jedgar@fxp.org>
2000-04-15 07:46:19 +00:00
Roger Hardiman
24cf43ae21 Upgrade the bktr driver from 2.07 to 2.10.
- The driver now uses bus_space() and runs on NetBSD 1.4.2
   Submitted by Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>

 - Remove startup quirks for video and vbi capture for PAL users.
   PAL TV users can now run FXTV and Alevt in any order.

 - Add support for cable channels >100
   Submitted by Scott Presnell <srp@zgi.com>

 - New MSP3410/3415 setup code added. This is experimental.
   Please set the sysctl hw.bt848.slow_msp_audio to 1 for this.
   Submitted by Frank Nobis<fn@radio-do.de>
2000-04-04 16:54:13 +00:00
Roger Hardiman
7313447c12 Backout changes made in 1.102 following feedback from NTSC users
There seems to be some problem with the new rgb_vbi_prog() RISC
code not working for NTSC users.

This means that European teletext users will need to start
Alevt (or open /dev/vbi0) BEFORE starting FXTV (or opening /dev/bktr0)
if they want to capture VBI data for Teletext/Videotext or WaveTop

Reported by: Chris Csanady <cc@137.org>, Kenneth D. Merry <ken@kdm.org>,
             Randy Bush <randy@psg.com>
1999-12-08 14:01:30 +00:00
Roger Hardiman
753d64dfbb Update to driver 2.05
Make tuner on French SECAM Hauppauge cards work
Submitted by:	Cyrille Lefevre <clefevre@citeweb.net>

Fix clipping bugs ready for Xv support in XFree86 4.0
Submitted by:	Thomas Mueller <tmueller@thmu.de>

Fix the 'feature' where /dev/vbi needed to be opened before /dev/bktr
when using Teletext with Alevt and FXTV.

Requested by:	Randall Hopper
1999-11-13 14:54:00 +00:00
Roger Hardiman
56597309fa Update to driver release 2.04
Update AverMedia GPIO values
Submitted by:	AverMedia

Add support for WinTV Theater Dolby Surround Sound DPL3518A chip
Submitted by:	Frank Nobis <fn@radio-do.de>

Make PLL mode the default for Bt878s. You no longer need options BKTR_USE_PLL
1999-10-28 13:58:17 +00:00
Roger Hardiman
96476a9986 Split the Bt848 driver into seperate files for
audio, tuner, card make, os dependent code and core bt848/i2c code.

Also, rewrite tuner code for FM Radio to make the code cleaner.
1999-09-26 22:06:20 +00:00
Poul-Henning Kamp
d6a0e38a1b Remove five now unused fields from struct cdevsw. They should never
have been there in the first place.  A GENERIC kernel shrinks almost 1k.

Add a slightly different safetybelt under nostop for tty drivers.

Add some missing FreeBSD tags
1999-09-25 18:24:47 +00:00
Roger Hardiman
ca0c4630a1 Move the bktr Bt848/Bt878 driver to /sys/dev/bktr
Phase 1) move the driver
Phase 2)
Phase 3) Profit, by splitting the driver into smaller files like
bktr_tuner, bktr_card, bktr_audio, bktr_<osname>
making it easier to maintain and understand.
1999-09-22 06:46:08 +00:00
Roger Hardiman
f53c00ee1a Update to driver release 1.74
Bug fix:     xmradio nolonger experiences a 6Mhz offset after running FXTV

New feature: Automatic Tuner selection for AVerMedia cards with
             configuration EEPROMs on (ie the Bt878 based cards)
1999-09-17 21:28:23 +00:00
Roger Hardiman
76e2530cfb Update to driver 1.73
Add new hauppauge Tuner Type 6
Add Aims Labs Video Highway Xtreme card type
1999-09-10 12:08:36 +00:00
Roger Hardiman
216c19e338 Update to driver 1.72.
Fix a bug where video capture locks up on channel changes.
Many thanks to Juha for solving this.

Submitted by: Juha Nurmela <Juha.Nurmela@quicknet.inet.fi>
1999-09-01 14:09:53 +00:00
Roger Hardiman
2dd2ab9fc8 Oops. I undid the $Id: -> $FreBSD: change.
Put it back to $FreeBSD:
1999-08-31 10:32:42 +00:00
Roger Hardiman
2271cf26df Update to driver release 1.71
New Features:
Greatly improved VBI capture support. (mainly for the AleVT port)
Supports select() on /dev/vbi
Improved RISC program for RGB+VBI capture to capture both evenodd
VBI data even when only capturing even only (or odd only) video
Based on code from Juha Nurmela <Juha.Nurmela@quicknet.inet.fi>

Support for Hauppauge 627 and Temic 4006
Submitted by: Maurice Castro <maurice@atum.castro.aus.net>

Bug Fix:
Fix bug in AverMedia card detection.
1999-08-31 10:29:42 +00:00
Bruce Evans
3de9d6fbe4 Don't restrict our requests for contiguous memory to addresses >= 1MB.
This fixes, at least, panics in ncr_attach() on i386's with about 5MB
of memory.  The restriction was a hack to leave some low memory for ISA
DMA, but on i386's we now allocate pages from the top down, so all the
restriction did was cause our allocations to fail when there is no free
memory above 1MB.
1999-08-29 09:03:58 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
Poul-Henning Kamp
9dcbe2404a Convert DEVFS hooks in (most) drivers to make_dev().
Diskslice/label code not yet handled.

Vinum, i4b, alpha, pc98 not dealt with (left to respective Maintainers)

Add the correct hook for devfs to kern_conf.c

The net result of this excercise is that a lot less files depends on DEVFS,
and devtoname() gets more sensible output in many cases.

A few drivers had minor additional cleanups performed relating to cdevsw
registration.

A few drivers don't register a cdevsw{} anymore, but only use make_dev().
1999-08-23 20:59:21 +00:00
Roger Hardiman
4efbc31757 Bug fixes
Change number of VBI lines from 16 to 12 for NTSC formats.
 Juha.Nurmela@quicknet.inet.fi found/fixed bug in VBI_SLEEP.

New features
 MSP3430G DBX initialisation from Matt Brown <matt@dqc.org>
 STB Bt878 card identification.
 Hauppauge Model Number identification.
 Changes to probeCard() for better eeprom identification.
 Experimental TDA9850 initialisation code, from Linux bttv.

Cross Platform Changes
 The driver has been reorgainsed based ideas from Brad Parker's port to Linux
 to seperate OS Dependant and Independant sections.
 I have backends for FreeBSD 2.2.x/3.x and 4.x newbus, BSDI, OpenBSD and NetBSD.

This commit has FreeBSD 2.2.8/2.2-stable/3.x and FreeBSD 4.x newbus backends.

Some code submitted by: Juha.Nurmela@quicknet.inet.fi
                        Matt Brown <matt@dqc.org>
                        Brad Parker <brad@parker.boston.ma.us>

Some code obtained from:        Linux bttv driver
1999-07-12 15:51:50 +00:00
Poul-Henning Kamp
03016f421b Remove cmaj and bmaj args from DEV_DRIVER_MODULE. 1999-07-04 14:58:56 +00:00
Peter Wemm
9929d2a045 Eliminate a bunch of #include "pci.h" and #if NPCI > 0 around entire
files.  config will leave the whole file out if configured to do so.
1999-07-03 20:17:08 +00:00
Roger Hardiman
3d68f363a4 Removed checking for unit>NBKTR.
No longer need when using device_get_softc.
(also fixed bug where loadable bktr module could only access 1st device)
1999-06-13 16:05:00 +00:00
Roger Hardiman
5a2f31f0fb Updated to use the new 4.x newbus API
Also removed the BSDI support (for now)
This allows the driver to be loaded/unloaded as a KLD
and loaded in the boot loader phase whithout making a custom kernel.
1999-06-12 14:54:56 +00:00
Roger Hardiman
2dc6d34fac Fix the cdevsw_add change made by PHK.
(It was accidentally added to the BSDI bktr_probe and not the
 FreeBSD bktr_probe)
1999-06-04 13:24:54 +00:00
Poul-Henning Kamp
2447bec829 Simplify cdevsw registration.
The cdevsw_add() function now finds the major number(s) in the
struct cdevsw passed to it.  cdevsw_add_generic() is no longer
needed, cdevsw_add() does the same thing.

cdevsw_add() will print an message if the d_maj field looks bogus.

Remove nblkdev and nchrdev variables.  Most places they were used
bogusly.  Instead check a dev_t for validity by seeing if devsw()
or bdevsw() returns NULL.

Move bdevsw() and devsw() functions to kern/kern_conf.c

Bump __FreeBSD_version to 400006

This commit removes:
        72 bogus makedev() calls
        26 bogus SYSINIT functions

if_xe.c bogusly accessed cdevsw[], author/maintainer please fix.

I4b and vinum not changed.  Patches emailed to authors.  LINT
probably broken until they catch up.
1999-05-31 11:29:30 +00:00
Poul-Henning Kamp
4e2f199e0c This commit should be a extensive NO-OP:
Reformat and initialize correctly all "struct cdevsw".

        Initialize the d_maj and d_bmaj fields.

        The d_reset field was not removed, although it is never used.

I used a program to do most of this, so all the files now use the
same consistent format.  Please keep it that way.

Vinum and i4b not modified, patches emailed to respective authors.
1999-05-30 16:53:49 +00:00
Roger Hardiman
ec3a598be7 Add support for the Bt878/Bt879's Intel 430 FX and
SIS/VIA/ OPTi chipset PCI bus workarounds.

These make the Bt878/879 chips stabler on certain
older and non-intel motherboards.

Use options BKTR_430_FX_MODE
or  options BKTR_SIS_VIA_MODE
to enable these modes.

Also rename 849 to 849A
1999-05-25 12:43:40 +00:00
Roger Hardiman
ab27fe4452 Added rgb_vbi_prog() to capture VBI data and video at the
same time. To capture VBI data, /dev/vbi must be opened
before starting video capture.
A partly on code from Hiroki Mori <mori@infocity.co.jp>
1999-05-23 21:40:51 +00:00
Bruce Evans
1979249db2 Restored rev.1.76 which was clobbered by rev.1.77. 1999-05-22 04:34:59 +00:00
Roger Hardiman
d3a26f0c62 Updated Australian channel frequencies
Submitted by: Ivan Brawley <brawley@internode.com.au>
1999-05-19 22:04:21 +00:00
Roger Hardiman
ec5d7ef31d Bt848 driver release 1.65
Change Intel GPIO mask to hopefully stop turning the Intel Camera off
Fixed tuner selection on Hauppauge card with tuner 0x0a
Replaced none tuner with no tuner for Theo de Raadt <deraadt@openbsd.org>.

Ivan Brawley <brawley@internode.com.au> added
the Australian channel frequencies.
1999-05-18 12:16:15 +00:00
Bruce Evans
a8481cfc72 memcmp -> bcmp. memcmp doesn't exist in the kernel, but unfortunately
it exists as a gcc builtin provided the kernel is not compiled with
-O0 or -fno-builtin.
1999-05-13 07:54:24 +00:00
Roger Hardiman
458b25e55b Support LifeView FlyVideo 98 cards. Use EEPROM for card autodetection.Use
bttv's audio mux values.

Automatically locate the EEPROM i2c address and read the subsystem_vendor_id
from EEPROM and not the PCI registers.

Add NSMBUS checks around smbus/iicbus i2c bus code

Add GPIO mask for the audio mux to each card type.
Add CARD_ZOLTRIX and CARD_KISS from mailing list searches.

Tested by: Paul Reece <paul@fastlane.net.au>,
           Ivan Brawley <brawley@internode.com.au> and
           Gilad Rom <rom_glsa@ein-hashofet.co.il>
1999-05-10 10:10:13 +00:00
Peter Wemm
579f45fa60 Simplify the COMPAT_PCI_DRIVER/DATA_SET hack. We can add:
#define COMPAT_PCI_DRIVER(name,data) DATA_SET(pcidevice_set,data)
.. to 2.2.x and 3.x if people think it's worth it.  Driver writers can do
this if it's not defined.  (The reason for this is that I'm trying to
progressively eliminate use of linker_sets where it hurts modularity and
runtime load capability, and these DATA_SET's keep getting in the way.)
1999-05-09 17:07:30 +00:00
Roger Hardiman
541157e3ac My last commit accidentally undid the changes made in rev 1.68
regarding COMPAT_PCI_DRIVER. Put them back.
1999-04-30 11:16:30 +00:00
Roger Hardiman
f677e15fe8 Added initial code for VBI capture based on work by
Hiroki Mori <mori@infocity.co.jp> and reworked by myself.
This allows software decoding of teletext, intercast and
subtitles via /dev/vbi.
1999-04-29 10:15:55 +00:00
Roger Hardiman
ea2052d226 Added new cards: NEC PK-UG-X017 and I/O DATA GV-BCTV2/PCI
Added new tuner: ALPS_TSBH1 (plus FM Radio for ALPS_TSCH5)
Added support for BCTV audio mux.

Submitted by Hiroki Mori <mori@infocity.co.jp>
1999-04-29 09:57:47 +00:00
Roger Hardiman
c8f810a76e Fix crashes caused by rows=0 or columns=0.
Add new #ifdef. By defining BKTR_NO_MSP_RESET you can prevent the
MSP34xx being reset by the bt848 driver. This is handy
if you pre-initialise the MSP34xx stereo audio chip in another
operating system first (eg MS Windows).
Suggested by:  Randal Hopper<aa8vb@ipass.net>
Suggested by:  Yuri Gindin <yuri@xpert.com>
1999-04-29 05:48:32 +00:00
Dmitrij Tejblum
604359cf9b s/static foo_devsw_installed = 0;/static int foo_devsw_installed;/.
(Edited automatically)
1999-04-28 10:54:24 +00:00