Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/man/man9 Document bus_space_reserve(9), bus_space_rese...
details: https://anonhg.NetBSD.org/src/rev/eb8c751e0629
branches: trunk
changeset: 766998:eb8c751e0629
user: dyoung <dyoung%NetBSD.org@localhost>
date: Wed Jul 06 18:27:31 2011 +0000
description:
Document bus_space_reserve(9), bus_space_reserve_subregion(9),
bus_space_release(9), bus_space_reservation_map(9),
bus_space_reservation_unmap(9), bus_space_reservation_addr(9),
bus_space_reservation_size(9), bus_space_handle_is_equal(9).
diffstat:
share/man/man9/bus_space.9 | 254 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 247 insertions(+), 7 deletions(-)
diffs (truncated from 352 to 300 lines):
diff -r 30d4dbdeb997 -r eb8c751e0629 share/man/man9/bus_space.9
--- a/share/man/man9/bus_space.9 Wed Jul 06 18:24:26 2011 +0000
+++ b/share/man/man9/bus_space.9 Wed Jul 06 18:27:31 2011 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: bus_space.9,v 1.42 2011/07/01 22:06:19 dyoung Exp $
+.\" $NetBSD: bus_space.9,v 1.43 2011/07/06 18:27:31 dyoung Exp $
.\"
.\" Copyright (c) 1997 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd July 1, 2011
+.Dd July 6, 2011
.Dt BUS_SPACE 9
.Os
.Sh NAME
@@ -38,6 +38,7 @@
.Nm bus_space_copy_region_4 ,
.Nm bus_space_copy_region_8 ,
.Nm bus_space_free ,
+.Nm bus_space_handle_is_equal ,
.Nm bus_space_is_equal ,
.Nm bus_space_map ,
.Nm bus_space_mmap ,
@@ -73,6 +74,14 @@
.Nm bus_space_read_stream_2 ,
.Nm bus_space_read_stream_4 ,
.Nm bus_space_read_stream_8 ,
+.Nm bus_space_release ,
+.Nm bus_space_reservation_addr ,
+.Nm bus_space_reservation_init ,
+.Nm bus_space_reservation_size ,
+.Nm bus_space_reservation_map ,
+.Nm bus_space_reservation_unmap ,
+.Nm bus_space_reserve ,
+.Nm bus_space_reserve_subregion ,
.Nm bus_space_set_region_1 ,
.Nm bus_space_set_region_2 ,
.Nm bus_space_set_region_4 ,
@@ -108,7 +117,31 @@
.Sh SYNOPSIS
.In sys/bus.h
.Ft bool
+.Fn bus_space_handle_is_equal "bus_space_tag_t space" \
+ "bus_space_handle_t handle1" "bus_space_handle_t handle2"
+.Ft bool
.Fn bus_space_is_equal "bus_space_tag_t space1" "bus_space_tag_t space2"
+.Ft void
+.Fn bus_space_release "bus_space_tag_t t" "bus_space_reservation_t *bsr"
+.Ft int
+.Fn bus_space_reserve "bus_space_tag_t t" "bus_addr_t bpa" "bus_size_t size" \
+ "int flags" "bus_space_reservation_t *bsrp"
+.Ft int
+.Fn bus_space_reserve_subregion "bus_space_tag_t t" \
+ "bus_addr_t reg_start" "bus_addr_t reg_end" \
+ "bus_size_t size" "bus_size_t alignment" "bus_size_t boundary" \
+ "int flags" "bus_space_reservation_t *bsrp"
+.Ft void
+.Fn bus_space_reservation_init "bus_space_reservation_t *bsr" \
+ "bus_addr_t addr" "bus_size_t size"
+.Ft bus_size_t
+.Fn bus_space_reservation_size "bus_space_reservation_t *bsr"
+.Ft int
+.Fn bus_space_reservation_map "bus_space_tag_t t" \
+ "bus_space_reservation_t *bsr" "int flags" "bus_space_handle_t *bshp"
+.Ft void
+.Fn bus_space_reservation_unmap "bus_space_tag_t t" "bus_space_handle_t bsh" \
+ "bus_size_t size"
.Ft int
.Fn bus_space_map "bus_space_tag_t space" "bus_addr_t address" \
"bus_size_t size" "int flags" "bus_space_handle_t *handlep"
@@ -544,6 +577,25 @@
Its contents are machine-dependent and should be considered opaque by
machine-independent code.
This type is used when performing bus space access operations.
+.It Fa bus_space_reservation_t
+.Pp
+The
+.Fa bus_space_reservation_t
+type is used to describe a range of bus space.
+It logically consists of a
+.Fa bus_addr_t ,
+the first address in the range,
+and a
+.Fa bus_size_t ,
+the length in bytes of the range.
+Machine-independent code creates and interrogates a
+.Fa bus_space_reservation_t
+using a constructor,
+.Fn bus_space_reservation_init ,
+and accessor functions,
+.Fn bus_space_reservation_addr
+and
+.Fn bus_space_reservation_size .
.El
.Sh COMPARING BUS SPACE TAGS
To check whether or not one
@@ -563,7 +615,9 @@
Bus space must be mapped before it can be used, and should be
unmapped when it is no longer needed.
The
-.Fn bus_space_map
+.Fn bus_space_map ,
+.Fn bus_space_reservation_map ,
+.Fn bus_space_reservation_unmap ,
and
.Fn bus_space_unmap
functions provide these capabilities.
@@ -579,7 +633,7 @@
.Pp
The
.Fn bus_space_map
-function maps the region of bus space named by the
+function exclusively reserves and maps the region of bus space named by the
.Fa space ,
.Fa address ,
and
@@ -666,11 +720,44 @@
Mapped regions may contain areas for which there is no device on the bus.
If space in those areas is accessed, the results are bus-dependent.
.Pp
+.It Fn bus_space_reservation_map "space" "bsr" "flags" "handlep"
+.Pp
+The
+.Fn bus_space_reservation_map
+function is similar to
+.Fn bus_space_map but it maps a region of bus space
+that was previously reserved by a call to
+.Fn bus_space_reserve
+or
+.Fn bus_space_reserve_subregion .
+The region is given by the
+.Fa space
+and
+.Fa bsr
+arguments.
+If successful, it returns zero and fills in the bus space handle pointed
+to by
+.Fa handlep
+with the handle that can be used to access the mapped region.
+If unsuccessful, it will return non-zero and leave the bus space handle
+pointed to by
+.Fa handlep
+in an undefined state.
+.Pp
+A region mapped by
+.Fn bus_space_reservation_map
+may only be unmapped by a call to
+.Fn bus_space_reservation_unmap .
+.Pp
+For more details, see the description of
+.Fn bus_space_map .
+.Pp
.It Fn bus_space_unmap "space" "handle" "size"
.Pp
The
.Fn bus_space_unmap
-function unmaps a region of bus space mapped with
+function unmaps and relinquishes a region of bus space reserved and
+mapped with
.Fn bus_space_map .
When unmapping a region, the
.Fa size
@@ -691,6 +778,26 @@
.Fn bus_space_unmap
will never return.
.Pp
+.It Fn bus_space_reservation_unmap "space" "handle" "size"
+.Pp
+The
+.Fn bus_space_reservation_unmap
+function is similar to
+.Fn bus_space_unmap
+but it should be called on handles
+mapped by
+.Fn bus_space_reservation_map
+and only on such handles.
+Unlike
+.Fn bus_space_unmap ,
+.Fn bus_space_reservation_unmap
+does not relinquish exclusive use of the bus space named by
+.Fa handle
+and
+.Fa size ;
+that is the job of
+.Fn bus_space_release .
+.Pp
.It Fn bus_space_subregion "space" "handle" "offset" "size" "nhandlep"
.Pp
The
@@ -785,6 +892,16 @@
.Fa prot
argument indicates the memory protection requested by the user application
for the range.
+.Pp
+.It Fn bus_space_handle_is_equal "space" "handle1" "handle2"
+Use
+.Fn bus_space_handle_is_equal to
+check whether or not
+.Fa handle1
+and
+.Fa handle2
+refer to regions starting at the same address in the bus space
+.Fa space .
.El
.Sh ALLOCATING AND FREEING BUS SPACE
Some devices require or allow bus space to be allocated by the operating
@@ -792,10 +909,19 @@
When the devices no longer need the space, the
operating system should free it for use by other devices.
The
-.Fn bus_space_alloc
+.Fn bus_space_alloc ,
+.Fn bus_space_free ,
+.Fn bus_space_reserve ,
+.Fn bus_space_reserve_subregion ,
and
-.Fn bus_space_free
+.Fn bus_space_release
functions provide these capabilities.
+The functions
+.Fn bus_space_reserve ,
+.Fn bus_space_reserve_subregion ,
+and
+.Fn bus_space_release
+are not yet available on all architectures.
.Pp
.Bl -ohang -compact
.It Fn bus_space_alloc "space" "reg_start" "reg_end" "size" "alignment" \
@@ -873,6 +999,120 @@
function can be used on handles created by
.Fn bus_space_alloc .
.Pp
+.It Fn bus_space_reserve "t" "bpa" "size" "flags" "bsrp"
+.Pp
+The
+.Fn bus_space_reserve
+function reserves, for the caller's exclusive use,
+.Fa size
+bytes starting at the address
+.Fa bpa
+in the space referenced by
+.Fa t .
+.Pp
+.Fn bus_space_reserve
+does
+.Em not
+map the space.
+The caller should use
+.Fn bus_space_reservation_map
+to map the reservation.
+.Fa flags
+contains a hint how the caller may map the reservation, later.
+Whenever possible, callers should pass the same flags to
+.Fn bus_space_reserve
+as they will pass to
+.Fn bus_space_reservation_map
+to map the reservation.
+.Pp
+On success,
+.Fn bus_space_reserve
+records the reservation at
+.Fa bsrp
+and returns 0.
+On failure,
+.Fa bsrp
+is undefined, and
+.Fn bus_space_reserve
+returns a non-zero error code.
+Possible error codes include
+.Bl -tag -width EOPNOTSUPP -offset indent
+.It Dv EOPNOTSUPP
+.Fn bus_space_reserve
+is not supported on this architecture, or
+.Fa flags
+was incompatible with the bus space represented by
+.Fa t .
+.It Dv ENOMEM
+There was not sufficient bus space at
+.Fa bpa
+to satisfy the request.
+.El
+.Pp
+.It Fn bus_space_reserve_subregion "t" "reg_start" "reg_end" \
+ "size" "alignment" "boundary" "flags" "bsrp"
+.Pp
+The
+.Fn bus_space_reserve_subregion
+function reserves, for the caller's exclusive use,
+.Fa size
+bytes in the space referenced by
+.Fa t .
+The parameters
+.Fa reg_start ,
+.Fa reg_end ,
+.Fa alignment ,
+.Fa boundary ,
+and
Home |
Main Index |
Thread Index |
Old Index