Scott Long f6b1c44d1f Mega busdma API commit.
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg.
Lockfunc allows a driver to provide a function for managing its locking
semantics while using busdma.  At the moment, this is used for the
asynchronous busdma_swi and callback mechanism.  Two lockfunc implementations
are provided: busdma_lock_mutex() performs standard mutex operations on the
mutex that is specified from lockfuncarg.  dftl_lock() is a panic
implementation and is defaulted to when NULL, NULL are passed to
bus_dma_tag_create().  The only time that NULL, NULL should ever be used is
when the driver ensures that bus_dmamap_load() will not be deferred.
Drivers that do not provide their own locking can pass
busdma_lock_mutex,&Giant args in order to preserve the former behaviour.

sparc64 and powerpc do not provide real busdma_swi functions, so this is
largely a noop on those platforms.  The busdma_swi on is64 is not properly
locked yet, so warnings will be emitted on this platform when busdma
callback deferrals happen.

If anyone gets panics or warnings from dflt_lock() being called, please
let me know right away.

Reviewed by:	tmm, gibbs
2003-07-01 15:52:06 +00:00
..
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-04-23 15:40:11 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-06-28 06:17:26 +00:00
2003-05-31 20:42:24 +00:00
2003-06-09 19:13:38 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-06-11 06:34:30 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-06-07 20:46:39 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-04-21 16:27:46 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-05-31 18:21:40 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-06-02 16:32:55 +00:00
2003-05-31 20:39:28 +00:00
2003-06-17 12:29:49 +00:00
2003-06-12 06:06:14 +00:00
2003-06-11 00:34:37 +00:00
2003-06-28 17:57:30 +00:00
2003-04-15 17:26:28 +00:00
2003-04-16 20:57:35 +00:00
2003-05-31 19:59:29 +00:00
2003-05-31 19:58:45 +00:00
2003-06-02 08:36:18 +00:00
2003-07-01 15:52:06 +00:00
2003-06-02 16:32:55 +00:00
2003-07-01 15:52:06 +00:00
2003-05-31 18:57:41 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 12:17:18 +00:00
2003-07-01 15:52:06 +00:00
2003-07-01 15:52:06 +00:00
2003-05-31 20:27:42 +00:00