Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src add pci_intr_alloc() man



details:   https://anonhg.NetBSD.org/src/rev/6485d11cd956
branches:  trunk
changeset: 809558:6485d11cd956
user:      knakahara <knakahara%NetBSD.org@localhost>
date:      Tue Jul 21 03:12:50 2015 +0000

description:
add pci_intr_alloc() man

diffstat:

 distrib/sets/lists/comp/mi |   11 +++-
 share/man/man9/Makefile    |    5 +-
 share/man/man9/pci_msi.9   |  120 +++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 131 insertions(+), 5 deletions(-)

diffs (233 lines):

diff -r de29d74f0a49 -r 6485d11cd956 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Tue Jul 21 03:10:42 2015 +0000
+++ b/distrib/sets/lists/comp/mi        Tue Jul 21 03:12:50 2015 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: mi,v 1.1970 2015/07/12 08:11:27 hannken Exp $
+#      $NetBSD: mi,v 1.1971 2015/07/21 03:12:50 knakahara Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -10618,12 +10618,15 @@
 ./usr/share/man/cat9/pci_get_capability.0      comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_get_powerstate.0      comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr.0                        comp-sys-catman         .cat
+./usr/share/man/cat9/pci_intr_alloc.0          comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_disestablish.0   comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_distribute.0     comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_establish.0      comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_evcnt.0          comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_map.0            comp-sys-catman         .cat
+./usr/share/man/cat9/pci_intr_release.0                comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intr_string.0         comp-sys-catman         .cat
+./usr/share/man/cat9/pci_intr_type.0           comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intx_alloc.0          comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_intx_release.0                comp-sys-catman         .cat
 ./usr/share/man/cat9/pci_make_tag.0            comp-sys-catman         .cat
@@ -17422,12 +17425,15 @@
 ./usr/share/man/html9/pci_get_capability.html  comp-sys-htmlman        html
 ./usr/share/man/html9/pci_get_powerstate.html  comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr.html            comp-sys-htmlman        html
+./usr/share/man/html9/pci_intr_alloc.html      comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_disestablish.html       comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_distribute.html comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_establish.html  comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_evcnt.html      comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_map.html                comp-sys-htmlman        html
+./usr/share/man/html9/pci_intr_release.html    comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intr_string.html     comp-sys-htmlman        html
+./usr/share/man/html9/pci_intr_type.html       comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intx_alloc.html      comp-sys-htmlman        html
 ./usr/share/man/html9/pci_intx_release.html    comp-sys-htmlman        html
 ./usr/share/man/html9/pci_make_tag.html                comp-sys-htmlman        html
@@ -24391,12 +24397,15 @@
 ./usr/share/man/man9/pci_get_capability.9      comp-sys-man            .man
 ./usr/share/man/man9/pci_get_powerstate.9      comp-sys-man            .man
 ./usr/share/man/man9/pci_intr.9                        comp-sys-man            .man
+./usr/share/man/man9/pci_intr_alloc.9          comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_disestablish.9   comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_distribute.9     comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_establish.9      comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_evcnt.9          comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_map.9            comp-sys-man            .man
+./usr/share/man/man9/pci_intr_release.9                comp-sys-man            .man
 ./usr/share/man/man9/pci_intr_string.9         comp-sys-man            .man
+./usr/share/man/man9/pci_intr_type.9           comp-sys-man            .man
 ./usr/share/man/man9/pci_intx_alloc.9          comp-sys-man            .man
 ./usr/share/man/man9/pci_intx_release.9                comp-sys-man            .man
 ./usr/share/man/man9/pci_make_tag.9            comp-sys-man            .man
diff -r de29d74f0a49 -r 6485d11cd956 share/man/man9/Makefile
--- a/share/man/man9/Makefile   Tue Jul 21 03:10:42 2015 +0000
+++ b/share/man/man9/Makefile   Tue Jul 21 03:12:50 2015 +0000
@@ -1,4 +1,4 @@
-#       $NetBSD: Makefile,v 1.388 2015/07/12 08:11:27 hannken Exp $
+#       $NetBSD: Makefile,v 1.389 2015/07/21 03:12:50 knakahara Exp $
 
 #      Makefile for section 9 (kernel function and variable) manual pages.
 
@@ -578,6 +578,9 @@
        pci.9 PCI_PRODUCT.9 \
        pci.9 PCI_REVISION.9
 MLINKS+=pci_msi.9 pci_msix.9 \
+       pci_msi.9 pci_intr_alloc.9 \
+       pci_msi.9 pci_intr_release.9 \
+       pci_msi.9 pci_intr_type.9 \
        pci_msi.9 pci_intx_alloc.9 \
        pci_msi.9 pci_intx_release.9 \
        pci_msi.9 pci_msi_count.9 \
diff -r de29d74f0a49 -r 6485d11cd956 share/man/man9/pci_msi.9
--- a/share/man/man9/pci_msi.9  Tue Jul 21 03:10:42 2015 +0000
+++ b/share/man/man9/pci_msi.9  Tue Jul 21 03:12:50 2015 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: pci_msi.9,v 1.3 2015/05/15 08:39:14 knakahara Exp $
+.\" $NetBSD: pci_msi.9,v 1.4 2015/07/21 03:12:50 knakahara Exp $
 .\"
 .\" Copyright (c) 2015 Internet Initiative Japan Inc.
 .\" All rights reserved.
@@ -24,7 +24,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd May 11, 2015
+.Dd Jul 15, 2015
 .Dt PCI_MSI 9
 .Os
 .Sh NAME
@@ -38,7 +38,9 @@
 .Nm pci_msix_alloc_exact ,
 .Nm pci_msix_alloc_map ,
 .Nm pci_intx_alloc ,
-.Nm pci_intr_release
+.Nm pci_intr_alloc ,
+.Nm pci_intr_release,
+.Nm pci_intr_type
 .Nd PCI MSI{,-X} manipulation functions
 .Sh SYNOPSIS
 .Ft int
@@ -63,9 +65,15 @@
 .Ft int
 .Fn pci_intx_alloc  "struct pci_attach_args *pa" \
 "pci_intr_handle_t **ihp"
+.Ft int
+.Fn pci_intr_alloc  "struct pci_attach_args *pa" \
+"pci_intr_handle_t **ihp" "int *counts" \
+"pci_intr_type_t max_type"
 .Ft void
 .Fn pci_intr_release "pci_chipset_tag_t pc" \
 "pci_intr_handle_t *pih" "int count"
+.Ft pci_intr_type_t
+.Fn pci_intr_type "pci_intr_handle_t ih"
 .Sh DESCRIPTION
 The
 .Nm
@@ -185,5 +193,111 @@
 and
 .Fn pci_msix_alloc
 have (the functions allocate memory for interrupt handlers).
+.Pp
+.Fn pci_intr_alloc
+is wrapper function which select and automatically fallback
+allocation functions according to the argument
+.Fa counts .
+The elements of
+.Fa counts
+array means each required interrupt count for INTx, MSI, and MSI-X.
+The index count of
+.Fa counts
+must be
+.Dv PCI_INTR_TYPE_SIZE .
+.Fa max_type
+must be PCI_INTR_TYPE_MSIX, PCI_INTR_TYPE_MSI, or PCI_INTR_TYPE_INTX.
+The parameter does not mean array index counts of
+.Fa counts .
+The parameter means the interrupt type which
+.Fn pci_intr_alloc
+tries to allocate first.
+I.e., if the driver wants to allocate interrupt the following way:
+.Bd -literal
+       5 MSI-X
+       1 MSI (if MSI-X allocation failed)
+       INTx (if MSI allocation failed either)
+.Ed
+the driver should call
+.Fn pci_intr_alloc
+in the following way:
+.Bd -literal
+       int counts[PCI_INTR_TYPE_SIZE];
+       counts[PCI_INTR_TYPE_MSIX] = 5;
+       counts[PCI_INTR_TYPE_MSI] = 1;
+       counts[PCI_INTR_TYPE_INTX] = 1;
+       error = pci_intr_alloc(pa, ihps, counts,
+                              PCI_INTR_TYPE_MSIX);
+.Ed
+If the driver wants to allocate int the following way:
+.Bd -literal
+       hardware max number MSI-X
+       1 MSI (if MSI-X allocation failed)
+.Ed
+that is, the driver does not use INTx, the driver should call
+.Fn pci_intr_alloc
+in the following way:
+.Bd -literal
+       int counts[PCI_INTR_TYPE_SIZE];
+       counts[PCI_INTR_TYPE_MSIX] = -1; /* -1 means max */
+       counts[PCI_INTR_TYPE_MSI] = 1;
+       counts[PCI_INTR_TYPE_INTX] = 0; /* 0 means not use */
+       error = pci_intr_alloc(pa, ihps, counts,
+                              PCI_INTR_TYPE_MSIX);
+.Ed
+If the driver wants to allocate int the following way:
+.Bd -literal
+       3 MSI
+       INTx (if MSI allocation failed)
+.Ed
+that is, the driver does not use MSI-X, the driver should call
+.Fn pci_intr_alloc
+in the following way:
+.Bd -literal
+       int counts[PCI_INTR_TYPE_SIZE];
+       counts[PCI_INTR_TYPE_MSIX] = 0; /* 0 means not use */
+       counts[PCI_INTR_TYPE_MSI] = 3;
+       counts[PCI_INTR_TYPE_INTX] = 1;
+       error = pci_intr_alloc(pa, ihps, counts,
+                              PCI_INTR_TYPE_MSI);
+.Ed
+If the driver wants to allocate int the following way:
+.Bd -literal
+       1 MSI
+       INTx (if MSI allocation failed)
+.Ed
+that is, general usage, the driver should call simply
+.Fn pci_intr_alloc
+in the following way:
+.Bd -literal
+       error = pci_intr_alloc(pa, ihps, NULL, 0);
+.Ed
+.Fa max_type
+is ignored in this case.
+.Fn pci_intr_alloc
+return zero on any allocation function success, and nonzero on
+all allocation functions failure. On success,
+.Fa counts
+is overwritten by a really allocated count.
+I.e, if 5 MSI-X is allocated,
+.Fa counts
+is
+.Bd -literal
+       counts[PCI_INTR_TYPE_MSIX] == 5
+       counts[PCI_INTR_TYPE_MSI] == 0
+       counts[PCI_INTR_TYPE_INTX] == 0
+.Ed
+on return.
+.Pp
+.Ft pci_intr_type_t
+return the interrupt type of
+.Fa ih .
+The return value is
+.Dv PCI_INTR_TYPE_MSIX
+for MSI-X,
+.Dv PCI_INTR_TYPE_MSI
+for MSI
+.Dv PCI_INTR_TYPE_INTX
+for others.
 .Sh SEE ALSO
 .Xr pci_intr 9



Home | Main Index | Thread Index | Old Index