update to libpciaccess 0.13.4

This commit is contained in:
matthieu 2015-05-10 09:31:51 +00:00
parent ca29790bc7
commit c7a38f5d4d
20 changed files with 1136 additions and 657 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,13 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
@ -13,7 +15,11 @@ Basic Installation
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
@ -53,12 +59,22 @@ The simplest way to compile this package is:
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation.
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. You can remove the program binaries and object files from the
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@ -67,8 +83,15 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
6. Often, you can also type `make uninstall' to remove the installed
files again.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
@ -93,7 +116,8 @@ same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
@ -120,7 +144,8 @@ Installation Names
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@ -131,15 +156,46 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@ -152,6 +208,13 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
@ -159,10 +222,15 @@ Particular systems
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae"
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
@ -174,6 +242,16 @@ and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
@ -189,7 +267,8 @@ type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
OS KERNEL-OS
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
@ -277,7 +356,7 @@ operates.
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *Note Installation Names::
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.

View File

View File

@ -1247,7 +1247,7 @@ dnl DEALINGS IN THE SOFTWARE.
# See the "minimum version" comment for each macro you use to see what
# version you require.
m4_defun([XORG_MACROS_VERSION],[
m4_define([vers_have], [1.17.1])
m4_define([vers_have], [1.19.0])
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
m4_if(m4_cmp(maj_have, maj_needed), 0,,
@ -1297,6 +1297,7 @@ if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then
AC_MSG_RESULT([no])
else
if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then
TRADITIONALCPPFLAGS="-traditional"
RAWCPPFLAGS="${RAWCPPFLAGS} -traditional"
AC_MSG_RESULT([yes])
else
@ -1305,6 +1306,7 @@ else
fi
rm -f conftest.$ac_ext
AC_SUBST(RAWCPPFLAGS)
AC_SUBST(TRADITIONALCPPFLAGS)
]) # XORG_PROG_RAWCPP
# XORG_MANPAGE_SECTIONS()
@ -1829,9 +1831,10 @@ AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
]) # XORG_WITH_ASCIIDOC
# XORG_WITH_DOXYGEN([MIN-VERSION], [DEFAULT])
# --------------------------------
# -------------------------------------------
# Minimum version: 1.5.0
# Minimum version for optional DEFAULT argument: 1.11.0
# Minimum version for optional DOT checking: 1.18.0
#
# Documentation tools are not always available on all platforms and sometimes
# not at the appropriate level. This macro enables a module to test for the
@ -1851,6 +1854,7 @@ AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
#
AC_DEFUN([XORG_WITH_DOXYGEN],[
AC_ARG_VAR([DOXYGEN], [Path to doxygen command])
AC_ARG_VAR([DOT], [Path to the dot graphics utility])
m4_define([_defopt], m4_default([$2], [auto]))
AC_ARG_WITH(doxygen,
AS_HELP_STRING([--with-doxygen],
@ -1894,6 +1898,20 @@ m4_ifval([$1],
AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed])
fi])
fi])
dnl Check for DOT if we have doxygen. The caller decides if it is mandatory
dnl HAVE_DOT is a variable that can be used in your doxygen.in config file:
dnl HAVE_DOT = @HAVE_DOT@
HAVE_DOT=no
if test "x$have_doxygen" = "xyes"; then
AC_PATH_PROG([DOT], [dot])
if test "x$DOT" != "x"; then
HAVE_DOT=yes
fi
fi
AC_SUBST([HAVE_DOT])
AM_CONDITIONAL([HAVE_DOT], [test "$HAVE_DOT" = "yes"])
AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes])
]) # XORG_WITH_DOXYGEN
@ -2076,6 +2094,29 @@ fi])
AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes])
]) # XORG_WITH_FOP
# XORG_WITH_M4([MIN-VERSION])
# ---------------------------
# Minimum version: 1.19.0
#
# This macro attempts to locate an m4 macro processor which supports
# -I option and is only useful for modules relying on M4 in order to
# expand macros in source code files.
#
# Interface to module:
# M4: returns the path of the m4 program found
# returns the path set by the user in the environment
#
AC_DEFUN([XORG_WITH_M4], [
AC_CACHE_CHECK([for m4 that supports -I option], [ac_cv_path_M4],
[AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4],
[[$ac_path_M4 -I. /dev/null > /dev/null 2>&1 && \
ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]],
[AC_MSG_ERROR([could not find m4 that supports -I option])],
[$PATH:/usr/gnu/bin])])
AC_SUBST([M4], [$ac_cv_path_M4])
]) # XORG_WITH_M4
# XORG_WITH_PS2PDF([DEFAULT])
# ----------------
# Minimum version: 1.6.0
@ -2530,7 +2571,8 @@ AC_ARG_ENABLE(malloc0returnsnull,
AC_MSG_CHECKING([whether malloc(0) returns NULL])
if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then
AC_RUN_IFELSE([AC_LANG_PROGRAM([
AC_CACHE_VAL([xorg_cv_malloc0_returns_null],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([
#include <stdlib.h>
],[
char *m0, *r0, *c0, *p;
@ -2540,9 +2582,9 @@ if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then
c0 = calloc(0,10);
exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1);
])],
[MALLOC_ZERO_RETURNS_NULL=yes],
[MALLOC_ZERO_RETURNS_NULL=no],
[MALLOC_ZERO_RETURNS_NULL=yes])
[xorg_cv_malloc0_returns_null=yes],
[xorg_cv_malloc0_returns_null=no])])
MALLOC_ZERO_RETURNS_NULL=$xorg_cv_malloc0_returns_null
fi
AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL])
@ -2831,7 +2873,7 @@ AC_LANG_CASE(
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition], [-fd])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement])
]
)
@ -2840,16 +2882,17 @@ AC_LANG_CASE(
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls])
XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
# These are currently disabled because they are noisy. They will be enabled
# in the future once the codebase is sufficiently modernized to silence
# them. For now, I don't want them to drown out the other warnings.
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
# Turn some warnings into errors, so we don't accidently get successful builds
# when there are problems that should be fixed.

View File

@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify

View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for libpciaccess 0.13.2.
# Generated by GNU Autoconf 2.69 for libpciaccess 0.13.4.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=libpciaccess>.
#
@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libpciaccess'
PACKAGE_TARNAME='libpciaccess'
PACKAGE_VERSION='0.13.2'
PACKAGE_STRING='libpciaccess 0.13.2'
PACKAGE_VERSION='0.13.4'
PACKAGE_STRING='libpciaccess 0.13.4'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=libpciaccess'
PACKAGE_URL=''
@ -639,6 +639,8 @@ LTLIBOBJS
LIBOBJS
PCIACCESS_LIBS
PCIACCESS_CFLAGS
CYGWIN_FALSE
CYGWIN_TRUE
GNU_FALSE
GNU_TRUE
SOLARIS_FALSE
@ -1357,7 +1359,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures libpciaccess 0.13.2 to adapt to many kinds of systems.
\`configure' configures libpciaccess 0.13.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1427,7 +1429,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of libpciaccess 0.13.2:";;
short | recursive ) echo "Configuration of libpciaccess 0.13.4:";;
esac
cat <<\_ACEOF
@ -1550,7 +1552,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
libpciaccess configure 0.13.2
libpciaccess configure 0.13.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2022,7 +2024,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by libpciaccess $as_me 0.13.2, which was
It was created by libpciaccess $as_me 0.13.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2851,7 +2853,7 @@ fi
# Define the identity of the package.
PACKAGE='libpciaccess'
VERSION='0.13.2'
VERSION='0.13.4'
cat >>confdefs.h <<_ACEOF
@ -12994,6 +12996,55 @@ $as_echo "$supported" >&6; }
fi
fi
if test $found = "no" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
fi
CFLAGS="$CFLAGS -fd"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fd" >&5
$as_echo_n "checking if $CC supports -fd... " >&6; }
cacheid=xorg_cv_cc_flag__fd
if eval \${$cacheid+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval $cacheid=yes
else
eval $cacheid=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
CFLAGS="$xorg_testset_save_CFLAGS"
eval supported=\$$cacheid
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5
$as_echo "$supported" >&6; }
if test "$supported" = "yes" ; then
BASE_CFLAGS="$BASE_CFLAGS -fd"
found="yes"
fi
fi
@ -13484,124 +13535,6 @@ $as_echo "$supported" >&6; }
xorg_testset_save_CFLAGS="$CFLAGS"
if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5
$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; }
if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unknown_warning_option=yes
else
xorg_cv_cc_flag_unknown_warning_option=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5
$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; }
xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option
CFLAGS="$xorg_testset_save_CFLAGS"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5
$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; }
if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unused_command_line_argument=yes
else
xorg_cv_cc_flag_unused_command_line_argument=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5
$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; }
xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument
CFLAGS="$xorg_testset_save_CFLAGS"
fi
found="no"
if test $found = "no" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
fi
CFLAGS="$CFLAGS -Wcast-qual"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wcast-qual" >&5
$as_echo_n "checking if $CC supports -Wcast-qual... " >&6; }
cacheid=xorg_cv_cc_flag__Wcast_qual
if eval \${$cacheid+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval $cacheid=yes
else
eval $cacheid=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
CFLAGS="$xorg_testset_save_CFLAGS"
eval supported=\$$cacheid
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5
$as_echo "$supported" >&6; }
if test "$supported" = "yes" ; then
BASE_CFLAGS="$BASE_CFLAGS -Wcast-qual"
found="yes"
fi
fi
xorg_testset_save_CFLAGS="$CFLAGS"
if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then
@ -13825,13 +13758,132 @@ $as_echo "$supported" >&6; }
fi
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls])
xorg_testset_save_CFLAGS="$CFLAGS"
if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5
$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; }
if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unknown_warning_option=yes
else
xorg_cv_cc_flag_unknown_warning_option=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5
$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; }
xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option
CFLAGS="$xorg_testset_save_CFLAGS"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5
$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; }
if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unused_command_line_argument=yes
else
xorg_cv_cc_flag_unused_command_line_argument=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5
$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; }
xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument
CFLAGS="$xorg_testset_save_CFLAGS"
fi
found="no"
if test $found = "no" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
fi
CFLAGS="$CFLAGS -Wlogical-op"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wlogical-op" >&5
$as_echo_n "checking if $CC supports -Wlogical-op... " >&6; }
cacheid=xorg_cv_cc_flag__Wlogical_op
if eval \${$cacheid+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval $cacheid=yes
else
eval $cacheid=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
CFLAGS="$xorg_testset_save_CFLAGS"
eval supported=\$$cacheid
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5
$as_echo "$supported" >&6; }
if test "$supported" = "yes" ; then
BASE_CFLAGS="$BASE_CFLAGS -Wlogical-op"
found="yes"
fi
fi
# These are currently disabled because they are noisy. They will be enabled
# in the future once the codebase is sufficiently modernized to silence
# them. For now, I don't want them to drown out the other warnings.
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align])
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
# Turn some warnings into errors, so we don't accidently get successful builds
# when there are problems that should be fixed.
@ -17785,13 +17837,17 @@ case $host_os in
;;
*netbsd*)
case $host in
*i386*)
PCIACCESS_LIBS="-li386 -lpci"
*i3-986*)
PCIACCESS_LIBS="$PCIACCESS_LIBS -li386"
;;
*x86_64*|*amd64*)
PCIACCESS_LIBS="-lx86_64 -lpci"
PCIACCESS_LIBS="$PCIACCESS_LIBS -lx86_64"
;;
*alpha*)
PCIACCESS_LIBS="$PCIACCESS_LIBS -lalpha"
;;
esac
PCIACCESS_LIBS="$PCIACCESS_LIBS -lpci"
netbsd=yes
;;
*openbsd*)
@ -17804,6 +17860,10 @@ case $host_os in
gnu*)
gnu=yes
;;
*cygwin*)
cygwin=yes
PCIACCESS_LIBS="$PCIACCESS_LIBS"
;;
esac
if test "x$linux" = xyes; then
@ -17854,6 +17914,14 @@ else
GNU_FALSE=
fi
if test "x$cygwin" = xyes; then
CYGWIN_TRUE=
CYGWIN_FALSE='#'
else
CYGWIN_TRUE='#'
CYGWIN_FALSE=
fi
# Check whether --enable-largefile was given.
if test "${enable_largefile+set}" = set; then :
@ -18292,6 +18360,10 @@ if test -z "${GNU_TRUE}" && test -z "${GNU_FALSE}"; then
as_fn_error $? "conditional \"GNU\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${CYGWIN_TRUE}" && test -z "${CYGWIN_FALSE}"; then
as_fn_error $? "conditional \"CYGWIN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@ -18689,7 +18761,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libpciaccess $as_me 0.13.2, which was
This file was extended by libpciaccess $as_me 0.13.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -18755,7 +18827,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
libpciaccess config.status 0.13.2
libpciaccess config.status 0.13.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([libpciaccess],[0.13.2],
AC_INIT([libpciaccess],[0.13.4],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=libpciaccess],[libpciaccess])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
@ -76,13 +76,17 @@ case $host_os in
;;
*netbsd*)
case $host in
*i386*)
PCIACCESS_LIBS="-li386 -lpci"
*i[3-9]86*)
PCIACCESS_LIBS="$PCIACCESS_LIBS -li386"
;;
*x86_64*|*amd64*)
PCIACCESS_LIBS="-lx86_64 -lpci"
PCIACCESS_LIBS="$PCIACCESS_LIBS -lx86_64"
;;
*alpha*)
PCIACCESS_LIBS="$PCIACCESS_LIBS -lalpha"
;;
esac
PCIACCESS_LIBS="$PCIACCESS_LIBS -lpci"
netbsd=yes
;;
*openbsd*)
@ -95,6 +99,10 @@ case $host_os in
gnu*)
gnu=yes
;;
*cygwin*)
cygwin=yes
PCIACCESS_LIBS="$PCIACCESS_LIBS"
;;
esac
AM_CONDITIONAL(LINUX, [test "x$linux" = xyes])
@ -103,6 +111,7 @@ AM_CONDITIONAL(NETBSD, [test "x$netbsd" = xyes])
AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes])
AM_CONDITIONAL(SOLARIS, [test "x$solaris" = xyes])
AM_CONDITIONAL(GNU, [test "x$gnu" = xyes])
AM_CONDITIONAL(CYGWIN, [test "x$cygwin" = xyes])
AC_SYS_LARGEFILE

View File

@ -59,7 +59,7 @@
#include <inttypes.h>
#if __GNUC__ >= 3
#if (__GNUC__ >= 3) || (__SUNPRO_C >= 0x5130)
#define __deprecated __attribute__((deprecated))
#else
#define __deprecated

View File

@ -56,6 +56,11 @@ OS_SUPPORT = x86_pci.c
VGA_ARBITER = common_vgaarb_stub.c
endif
if CYGWIN
OS_SUPPORT = x86_pci.c
VGA_ARBITER = common_vgaarb_stub.c
endif
libpciaccess_la_SOURCES = common_bridge.c \
common_iterator.c \
common_init.c \

View File

@ -122,22 +122,24 @@ am__libpciaccess_la_SOURCES_DIST = common_bridge.c common_iterator.c \
common_init.c common_interface.c common_io.c \
common_capability.c common_device_name.c common_map.c \
pciaccess_private.h common_vgaarb_stub.c common_vgaarb.c \
freebsd_pci.c x86_pci.c linux_sysfs.c linux_devmem.c \
x86_pci.c freebsd_pci.c linux_sysfs.c linux_devmem.c \
linux_devmem.h netbsd_pci.c openbsd_pci.c solx_devfs.c \
pci_tools.h
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@SOLARIS_TRUE@am__objects_1 = common_vgaarb_stub.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_TRUE@am__objects_1 = common_vgaarb_stub.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@am__objects_1 = \
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@ common_vgaarb.lo
@FREEBSD_FALSE@@GNU_TRUE@am__objects_1 = common_vgaarb_stub.lo
@FREEBSD_TRUE@am__objects_1 = common_vgaarb_stub.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@OPENBSD_FALSE@@SOLARIS_TRUE@am__objects_2 = solx_devfs.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@OPENBSD_TRUE@am__objects_2 = openbsd_pci.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_TRUE@am__objects_2 = netbsd_pci.lo
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@am__objects_2 = linux_sysfs.lo \
@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@ linux_devmem.lo
@FREEBSD_FALSE@@GNU_TRUE@am__objects_2 = x86_pci.lo
@FREEBSD_TRUE@am__objects_2 = freebsd_pci.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@SOLARIS_TRUE@am__objects_1 = common_vgaarb_stub.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_TRUE@am__objects_1 = common_vgaarb_stub.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@am__objects_1 = common_vgaarb.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_TRUE@am__objects_1 = \
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_TRUE@ common_vgaarb_stub.lo
@CYGWIN_FALSE@@FREEBSD_TRUE@am__objects_1 = common_vgaarb_stub.lo
@CYGWIN_TRUE@am__objects_1 = common_vgaarb_stub.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@OPENBSD_FALSE@@SOLARIS_TRUE@am__objects_2 = solx_devfs.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_FALSE@@OPENBSD_TRUE@am__objects_2 = openbsd_pci.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_FALSE@@NETBSD_TRUE@am__objects_2 = netbsd_pci.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@am__objects_2 = linux_sysfs.lo \
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_FALSE@@LINUX_TRUE@ linux_devmem.lo
@CYGWIN_FALSE@@FREEBSD_FALSE@@GNU_TRUE@am__objects_2 = x86_pci.lo
@CYGWIN_FALSE@@FREEBSD_TRUE@am__objects_2 = freebsd_pci.lo
@CYGWIN_TRUE@am__objects_2 = x86_pci.lo
am_libpciaccess_la_OBJECTS = common_bridge.lo common_iterator.lo \
common_init.lo common_interface.lo common_io.lo \
common_capability.lo common_device_name.lo common_map.lo \
@ -337,6 +339,7 @@ top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/include
AM_CFLAGS = $(CWARNFLAGS) @PCIACCESS_CFLAGS@
lib_LTLIBRARIES = libpciaccess.la
@CYGWIN_TRUE@OS_SUPPORT = x86_pci.c
@FREEBSD_TRUE@OS_SUPPORT = freebsd_pci.c
@GNU_TRUE@OS_SUPPORT = x86_pci.c
@LINUX_TRUE@OS_SUPPORT = linux_sysfs.c linux_devmem.c linux_devmem.h
@ -344,6 +347,7 @@ lib_LTLIBRARIES = libpciaccess.la
@OPENBSD_TRUE@OS_SUPPORT = openbsd_pci.c
# VGA Arbiter code is included in openbsd_pci.c
@SOLARIS_TRUE@OS_SUPPORT = solx_devfs.c pci_tools.h
@CYGWIN_TRUE@VGA_ARBITER = common_vgaarb_stub.c
@FREEBSD_TRUE@VGA_ARBITER = common_vgaarb_stub.c
@GNU_TRUE@VGA_ARBITER = common_vgaarb_stub.c
@LINUX_TRUE@VGA_ARBITER = common_vgaarb.c

View File

@ -52,7 +52,7 @@ pci_system_init( void )
{
int err = ENOSYS;
#ifdef linux
#ifdef __linux__
err = pci_system_linux_sysfs_create();
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
err = pci_system_freebsd_create();
@ -62,8 +62,10 @@ pci_system_init( void )
err = pci_system_openbsd_create();
#elif defined(__sun)
err = pci_system_solx_devfs_create();
#elif defined(__GNU__)
#elif defined(__GNU__) || defined(__CYGWIN__)
err = pci_system_x86_create();
#else
# error "Unsupported OS"
#endif
return err;

View File

@ -36,7 +36,7 @@
#include "pciaccess.h"
#include "pciaccess_private.h"
#if defined(__linux__) || defined(__GLIBC__)
#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__)
#include <byteswap.h>
#if __BYTE_ORDER == __BIG_ENDIAN

View File

@ -25,6 +25,10 @@
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@ -33,7 +37,6 @@
#include <stdlib.h>
#include <limits.h>
#include "config.h"
#include "pciaccess.h"
#include "pciaccess_private.h"

View File

@ -33,6 +33,10 @@
* \author Eric Anholt <eric@anholt.net>
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@ -45,7 +49,6 @@
#include <sys/mman.h>
#include <sys/memrange.h>
#include "config.h"
#include "pciaccess.h"
#include "pciaccess_private.h"
@ -579,6 +582,7 @@ pci_device_freebsd_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
#elif defined(PCI_MAGIC_IO_RANGE)
ret->memory = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,
@ -588,6 +592,7 @@ pci_device_freebsd_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
#else
return NULL;

View File

@ -34,6 +34,10 @@
#define _GNU_SOURCE
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@ -57,8 +61,6 @@
#define iopl(x) -1
#endif
#include "config.h"
#ifdef HAVE_MTRR
#include <asm/mtrr.h>
#include <sys/ioctl.h>
@ -759,6 +761,7 @@ pci_device_linux_sysfs_open_device_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 0;
return ret;
}
@ -796,6 +799,7 @@ pci_device_linux_sysfs_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
}
@ -813,10 +817,14 @@ pci_device_linux_sysfs_read32(struct pci_io_handle *handle, uint32_t port)
{
uint32_t ret;
if (handle->fd > -1)
pread(handle->fd, &ret, 4, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pread(handle->fd, &ret, 4, port + handle->base);
else
pread(handle->fd, &ret, 4, port);
} else {
ret = inl(port + handle->base);
}
return ret;
}
@ -826,10 +834,14 @@ pci_device_linux_sysfs_read16(struct pci_io_handle *handle, uint32_t port)
{
uint16_t ret;
if (handle->fd > -1)
pread(handle->fd, &ret, 2, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pread(handle->fd, &ret, 2, port + handle->base);
else
pread(handle->fd, &ret, 2, port);
} else {
ret = inw(port + handle->base);
}
return ret;
}
@ -839,10 +851,14 @@ pci_device_linux_sysfs_read8(struct pci_io_handle *handle, uint32_t port)
{
uint8_t ret;
if (handle->fd > -1)
pread(handle->fd, &ret, 1, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pread(handle->fd, &ret, 1, port + handle->base);
else
pread(handle->fd, &ret, 1, port);
} else {
ret = inb(port + handle->base);
}
return ret;
}
@ -851,30 +867,42 @@ static void
pci_device_linux_sysfs_write32(struct pci_io_handle *handle, uint32_t port,
uint32_t data)
{
if (handle->fd > -1)
pwrite(handle->fd, &data, 4, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pwrite(handle->fd, &data, 4, port + handle->base);
else
pwrite(handle->fd, &data, 4, port);
} else {
outl(data, port + handle->base);
}
}
static void
pci_device_linux_sysfs_write16(struct pci_io_handle *handle, uint32_t port,
uint16_t data)
{
if (handle->fd > -1)
pwrite(handle->fd, &data, 2, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pwrite(handle->fd, &data, 2, port + handle->base);
else
pwrite(handle->fd, &data, 2, port);
} else {
outw(data, port + handle->base);
}
}
static void
pci_device_linux_sysfs_write8(struct pci_io_handle *handle, uint32_t port,
uint8_t data)
{
if (handle->fd > -1)
pwrite(handle->fd, &data, 1, port + handle->base);
else
if (handle->fd > -1) {
if (handle->is_legacy)
pwrite(handle->fd, &data, 1, port + handle->base);
else
pwrite(handle->fd, &data, 1, port);
} else {
outb(data, port + handle->base);
}
}
static int

View File

@ -16,15 +16,15 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef HAVE_MTRR
#include <machine/sysarch.h>
#include <machine/mtrr.h>
@ -733,6 +733,7 @@ pci_device_netbsd_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
#elif defined(__amd64__)
struct x86_64_iopl_args ia;
@ -743,6 +744,7 @@ pci_device_netbsd_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
#else
return NULL;
@ -841,6 +843,29 @@ pci_device_netbsd_unmap_legacy(struct pci_device *dev, void *addr,
return pci_device_netbsd_unmap_range(dev, &map);
}
static int
pci_device_netbsd_has_kernel_driver(struct pci_device *dev)
{
#ifdef PCI_IOC_DRVNAME
/*
* NetBSD PCI_IOC_DRVNAME appears at the same time as pci_drvname(3)
*/
char drvname[16];
if (dev->bus >= nbuses)
return 0;
/*
* vga(4) should be considered "not bound".
*/
if (pci_drvname(buses[dev->bus].fd, dev->dev, dev->func,
drvname, sizeof drvname) == 0 &&
strncmp(drvname, "vga", 3) != 0)
return 1;
#endif
return 0;
}
static const struct pci_system_methods netbsd_pci_methods = {
.destroy = pci_system_netbsd_destroy,
.destroy_device = NULL,
@ -865,6 +890,7 @@ static const struct pci_system_methods netbsd_pci_methods = {
.write8 = pci_device_netbsd_write8,
.map_legacy = pci_device_netbsd_map_legacy,
.unmap_legacy = pci_device_netbsd_unmap_legacy,
.has_kernel_driver = pci_device_netbsd_has_kernel_driver,
};
int

View File

@ -464,6 +464,7 @@ pci_device_openbsd_open_legacy_io(struct pci_io_handle *ret,
ret->base = legacy_io_handle->base;
ret->size = legacy_io_handle->size;
ret->memory = legacy_io_handle->memory;
ret->is_legacy = 1;
return ret;
}
#if defined(__i386__)

View File

@ -42,7 +42,7 @@
* know of any OS we support where this isn't available in a sufficiently
* new version, so warn unconditionally.
*/
#include <sys/fcntl.h>
#include <fcntl.h>
#ifndef O_CLOEXEC
#warning O_CLOEXEC not available, please upgrade.
@ -109,6 +109,7 @@ struct pci_io_handle {
pciaddr_t size;
void *memory;
int fd;
int is_legacy;
};
struct pci_device_private {

View File

@ -724,6 +724,9 @@ pci_device_solx_devfs_map_range(struct pci_device *dev,
strerror(errno));
return err;
}
#ifndef __sparc
xsvc_fd = map_fd;
#endif
}
map->memory = mmap(NULL, map->size, prot, MAP_SHARED, map_fd, map->base);
@ -911,6 +914,7 @@ pci_device_solx_devfs_open_legacy_io(struct pci_io_handle *ret,
if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) == 0) {
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
}
#endif

View File

@ -72,6 +72,133 @@ x86_disable_io(void)
return errno;
}
#elif defined(__CYGWIN__)
#include <windows.h>
/* WinIo declarations */
typedef BYTE bool;
typedef struct tagPhysStruct {
DWORD64 dwPhysMemSizeInBytes;
DWORD64 pvPhysAddress;
DWORD64 PhysicalMemoryHandle;
DWORD64 pvPhysMemLin;
DWORD64 pvPhysSection;
} tagPhysStruct;
typedef bool (_stdcall* INITIALIZEWINIO)(void);
typedef void (_stdcall* SHUTDOWNWINIO)(void);
typedef bool (_stdcall* GETPORTVAL)(WORD,PDWORD,BYTE);
typedef bool (_stdcall* SETPORTVAL)(WORD,DWORD,BYTE);
typedef PBYTE (_stdcall* MAPPHYSTOLIN)(tagPhysStruct*);
typedef bool (_stdcall* UNMAPPHYSMEM)(tagPhysStruct*);
SHUTDOWNWINIO ShutdownWinIo;
GETPORTVAL GetPortVal;
SETPORTVAL SetPortVal;
INITIALIZEWINIO InitializeWinIo;
MAPPHYSTOLIN MapPhysToLin;
UNMAPPHYSMEM UnmapPhysicalMemory;
static int
x86_enable_io(void)
{
HMODULE lib = NULL;
if ((GetVersion() & 0x80000000) == 0) {
/* running on NT, try WinIo version 3 (32 or 64 bits) */
#ifdef WIN64
lib = LoadLibrary("WinIo64.dll");
#else
lib = LoadLibrary("WinIo32.dll");
#endif
}
if (!lib) {
fprintf(stderr, "Failed to load WinIo library.\n");
return 1;
}
#define GETPROC(n, d) \
n = (d) GetProcAddress(lib, #n); \
if (!n) { \
fprintf(stderr, "Failed to load " #n " function.\n"); \
return 1; \
}
GETPROC(InitializeWinIo, INITIALIZEWINIO);
GETPROC(ShutdownWinIo, SHUTDOWNWINIO);
GETPROC(GetPortVal, GETPORTVAL);
GETPROC(SetPortVal, SETPORTVAL);
GETPROC(MapPhysToLin, MAPPHYSTOLIN);
GETPROC(UnmapPhysicalMemory, UNMAPPHYSMEM);
#undef GETPROC
if (!InitializeWinIo()) {
fprintf(stderr, "Failed to initialize WinIo.\n"
"NOTE: WinIo.dll and WinIo.sys must be in the same directory as the executable!\n");
return 0;
}
return 0;
}
static int
x86_disable_io(void)
{
ShutdownWinIo();
return 1;
}
static inline uint8_t
inb(uint16_t port)
{
DWORD pv;
if (GetPortVal(port, &pv, 1))
return (uint8_t)pv;
return 0;
}
static inline uint16_t
inw(uint16_t port)
{
DWORD pv;
if (GetPortVal(port, &pv, 2))
return (uint16_t)pv;
return 0;
}
static inline uint32_t
inl(uint16_t port)
{
DWORD pv;
if (GetPortVal(port, &pv, 4))
return (uint32_t)pv;
return 0;
}
static inline void
outb(uint8_t value, uint16_t port)
{
SetPortVal(port, value, 1);
}
static inline void
outw(uint16_t value, uint16_t port)
{
SetPortVal(port, value, 2);
}
static inline void
outl(uint32_t value, uint16_t port)
{
SetPortVal(port, value, 4);
}
#else
#error How to enable IO ports on this system?
@ -471,6 +598,41 @@ pci_device_x86_probe(struct pci_device *dev)
return 0;
}
#if defined(__CYGWIN__)
static int
pci_device_x86_map_range(struct pci_device *dev,
struct pci_device_mapping *map)
{
tagPhysStruct phys;
phys.pvPhysAddress = (DWORD64)(DWORD32)map->base;
phys.dwPhysMemSizeInBytes = map->size;
map->memory = (PDWORD)MapPhysToLin(&phys);
if (map->memory == NULL)
return EFAULT;
return 0;
}
static int
pci_device_x86_unmap_range(struct pci_device *dev,
struct pci_device_mapping *map)
{
tagPhysStruct phys;
phys.pvPhysAddress = (DWORD64)(DWORD32)map->base;
phys.dwPhysMemSizeInBytes = map->size;
if (!UnmapPhysicalMemory(&phys))
return EFAULT;
return 0;
}
#else
static int
pci_device_x86_map_range(struct pci_device *dev,
struct pci_device_mapping *map)
@ -492,6 +654,15 @@ pci_device_x86_map_range(struct pci_device *dev,
return 0;
}
static int
pci_device_x86_unmap_range(struct pci_device *dev,
struct pci_device_mapping *map)
{
return pci_device_generic_unmap_range(dev, map);
}
#endif
static int
pci_device_x86_read(struct pci_device *dev, void *data,
pciaddr_t offset, pciaddr_t size, pciaddr_t *bytes_read)
@ -558,6 +729,7 @@ pci_device_x86_open_legacy_io(struct pci_io_handle *ret,
ret->base = base;
ret->size = size;
ret->is_legacy = 1;
return ret;
}
@ -635,7 +807,7 @@ pci_device_x86_unmap_legacy(struct pci_device *dev, void *addr,
map.flags = 0;
map.memory = addr;
return pci_device_generic_unmap_range(dev, &map);
return pci_device_x86_unmap_range(dev, &map);
}
static const struct pci_system_methods x86_pci_methods = {
@ -643,7 +815,7 @@ static const struct pci_system_methods x86_pci_methods = {
.read_rom = pci_device_x86_read_rom,
.probe = pci_device_x86_probe,
.map_range = pci_device_x86_map_range,
.unmap_range = pci_device_generic_unmap_range,
.unmap_range = pci_device_x86_unmap_range,
.read = pci_device_x86_read,
.write = pci_device_x86_write,
.fill_capabilities = pci_fill_capabilities_generic,