All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files
@ 2015-10-15  5:55 Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 01/79] headers_install.sh: enhance error handling Mikko Rapeli
                   ` (80 more replies)
  0 siblings, 81 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli

v4:
tried to fix v03 review findings
tried to fix all hack patches

v3:
https://lkml.org/lkml/2015/5/30/96
tried to fix all v2 review findings
tried to guess how to fix a few more issue
with a few hacks, 0 files fail and 760 files pass the compile test on 32bit x86

v2:
https://lkml.org/lkml/2015/2/16/521
added cross compiler support with CROSS_COMPILE,
detecting libc and GCC headers from compiler,
more header file fixes

v1:
https://lkml.org/lkml/2014/8/21/665

Users of kernel header files would be happier if they did not contain
kernel specific parts and would contain #include statements for all
other header files that they depend on, and in general would compile.

This patch set introduces a compile test for headers exported to userspace
and then fixes many of the userspace header compilation failures.

Changes are also available in headers_test_v04 branch at github:
https://github.com/mcfrisk/linux/tree/headers_test_v04

Here's how to run the userspace compile tests:

$ make headers_install && cd usr/include && \
  ../../scripts/headers_compile_test.sh

Additionally tested an allyesconfig compilation on i686, x86_64 and ARMEL.

For x86 and ARMEL all header file compile errors in userspace are
fixed with this series and Ingo Molnars x86/headers branch changes from
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git .

Remaining task is to fix all other archs.

If these changes are merged, it becomes possible to run abi-compliance-checker
tool https://lvc.github.io/abi-compliance-checker/ to detect API and ABI
breakages from the uapi headers.

Once all archs have completely compiling uapi headers, I would add this test
to 'make headers_check' build target to prevent regressions.

Mikko Rapeli (79):
  headers_install.sh: enhance error handling
  scripts/headers_compile_test.sh: compile test script for exported
    headers
  drm.h: use __kernel_size_t instead of size_t
  drm_mode.h: use __u32 and __u64 from linux/types.h
  exynos_drm.h: use __u64 from linux/types.h
  nouveau_drm.h: use __u32 and __u64 from linux/types.h
  radeon_drm.h: use __u32 and __u64 from linux/types.h
  r128_drm.h: include drm/drm.h
  via_drm.h: don't include non-existing via_drmclient.h
  via_drm.h: move struct via_file_private definition to
    drivers/gpu/drm/via/via_drv.h
  savage_drm.h: include <drm/drm.h>
  include/uapi/drm/sis_drm.h: move sis_file_private to
    drivers/gpu/drm/sis/sis_drv.h
  drm/i810_drm.h: include drm/drm.h
  include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from
    linux/types.h
  include/uapi/drm/qxl_drm.h: use __s32, __u32 and __u64 from
    linux/types.h
  include/uapi/linux/agpgart.h: include stdlib.h in userspace
  include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP
    macro
  dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
  hsi_char.h: use __u32 from linux/types.h
  include/uapi/linux/hsi/cs-protocol.h: include linux/time.h
  ebtables.h: use __u64 from linux/types.h
  cld.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  sctp.h: use __u8 and __u32 from linux/types.h
  scsi_bsg_fc.h: use __u8, __u32 and __u64 from linux/types.h
  scsi_netlink.h: use __u8, __u16 and __u64 from linux/types.h
  scsi_netlink_fc.h: use __u16, __u32 and __u64 from linux/types.h
  hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of
    stdint.h
  gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  gntdev.h: use __u32 and __u64 from linux/types.h
  include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t
  include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h
  include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h
  include/uapi/asm-generic/shmbuf.h: include fixes
  asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h
  include/uapi/asm-generic/signal.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/socket.h: include sys/socket.h in userspace
  include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
  include/uapi/linux/if_pppox.h: include linux/if.h
  include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and
    linux/in6.h
  include/uapi/linux/ipv6_route.h: include linux/in6.h
  include/uapi/linux/ipv6_route.h: include linux/in6.h
  include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h
  include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h
  linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to
    hdlc/ioctl.h
  include/uapi/linux/packet_diag.h: include linux/netdevice.h
  include/uapi/linux/llc.h: include linux/if.h
  include/uapi/linux/mqueue.h: include linux/types.h
  include/uapi/linux/mroute.h: include linux/in.h
  include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h
  include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h
  include/uapi/netfilter/*.h: fix include files for compilation
  include/uapi/linux/errqueue.h: include linux/time.h
  include/uapi/asm-generic/ucontext.h: include asm/signal.h and
    asm/sigcontext.h
  arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/auto_fs.h: include linux/limits.h
  include/uapi/linux/openvswitch.h: use __u32 from linux/types.h
  include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and
    __u64 from linux/types.h
  include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t
  include/uapi/linux/atm_zatm.h: include linux/time.h
  include/uapi/linux/scc.h: include linux/sockios.h
  include/uapi/linux/btrfs.h: define NULL
  include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
  include/uapi/linux/reiserfs_xattr.h: use __kernel_size_t instead of
    size_t
  include/uapi/linux/patchkey.h: change #error to #warning if file
    included directly
  include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc
    definitions for userspace
  include/uapi/linux/android/binder.h: use __kernel_pid_t and
    __kernel_uid_t
  arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and
    linux/ipc.h
  include/uapi/linux/dvb/video.h: remove stdint.h include
  include/uapi/mtd/mtd-user.h: remove stdint.h include
  include/uapi/linux/fuse.h: use linux/types.h also in userspace
  include/linux/ipmi-fru.h: use linux/types.h instead of stdint.h
  include/linux/sdb.h: use linux/types.h types instead of stdint.h
  include/linux/xz.h: use linux/types.h types instead of stdint.h
  include/uapi/xen/privcmd.h: fix compilation in userspace
  coda_psdev.h: move upc_req definition from uapi to kernel side headers
  include/uapi/linux/elfcore.h: remove non-compiling userspace parts
  include/uapi/linux/errqueue.h: include time.h in userspace
  arch/arm/include/uapi/asm/signal.h: use __kernel_size_t instead of
    size_t

 arch/arm/include/asm/xen/interface.h               |   2 +-
 arch/arm/include/uapi/asm/signal.h                 |   2 +-
 arch/x86/include/uapi/asm/sembuf.h                 |   3 +
 arch/x86/include/uapi/asm/signal.h                 |   2 +-
 drivers/gpu/drm/sis/sis_drv.h                      |   4 +
 drivers/gpu/drm/via/via_drv.h                      |   4 +
 include/linux/coda_psdev.h                         |  11 +
 include/linux/ipmi-fru.h                           |  31 +-
 include/linux/sdb.h                                |  62 ++-
 include/linux/xz.h                                 |  11 +-
 include/uapi/asm-generic/ipcbuf.h                  |   2 +
 include/uapi/asm-generic/msgbuf.h                  |   2 +
 include/uapi/asm-generic/sembuf.h                  |   2 +
 include/uapi/asm-generic/shmbuf.h                  |   4 +-
 include/uapi/asm-generic/signal.h                  |   2 +-
 include/uapi/asm-generic/ucontext.h                |   3 +
 include/uapi/drm/drm.h                             |   9 +-
 include/uapi/drm/drm_mode.h                        |  16 +-
 include/uapi/drm/exynos_drm.h                      |   6 +-
 include/uapi/drm/i810_drm.h                        |   2 +
 include/uapi/drm/nouveau_drm.h                     |  86 ++--
 include/uapi/drm/qxl_drm.h                         |  74 ++--
 include/uapi/drm/r128_drm.h                        |   2 +
 include/uapi/drm/radeon_drm.h                      | 128 +++---
 include/uapi/drm/savage_drm.h                      |   2 +
 include/uapi/drm/sis_drm.h                         |   4 -
 include/uapi/drm/via_drm.h                         |   7 -
 include/uapi/drm/vmwgfx_drm.h                      | 264 ++++++-------
 include/uapi/linux/agpgart.h                       |   1 +
 include/uapi/linux/android/binder.h                |   4 +-
 include/uapi/linux/atm_zatm.h                      |   1 +
 include/uapi/linux/auto_fs.h                       |   1 +
 include/uapi/linux/btrfs.h                         |   6 +
 include/uapi/linux/coda.h                          |  11 +-
 include/uapi/linux/coda_psdev.h                    |  13 -
 include/uapi/linux/dlm_netlink.h                   |   1 +
 include/uapi/linux/dm-log-userspace.h              |  43 +-
 include/uapi/linux/dvb/video.h                     |   1 -
 include/uapi/linux/elfcore.h                       |  21 +-
 include/uapi/linux/errqueue.h                      |   6 +
 include/uapi/linux/fuse.h                          | 440 ++++++++++-----------
 include/uapi/linux/hdlc/ioctl.h                    |   1 +
 include/uapi/linux/hsi/cs-protocol.h               |   1 +
 include/uapi/linux/hsi/hsi_char.h                  |  17 +-
 include/uapi/linux/if.h                            |   6 +-
 include/uapi/linux/if_pppol2tp.h                   |   3 +-
 include/uapi/linux/if_pppox.h                      |   3 +
 include/uapi/linux/if_tunnel.h                     |   3 +
 include/uapi/linux/ip6_tunnel.h                    |   2 +
 include/uapi/linux/ipv6_route.h                    |   1 +
 include/uapi/linux/kexec.h                         |   4 +-
 include/uapi/linux/llc.h                           |   1 +
 include/uapi/linux/mqueue.h                        |   2 +
 include/uapi/linux/mroute.h                        |   1 +
 include/uapi/linux/mroute6.h                       |   1 +
 include/uapi/linux/netfilter/ipset/ip_set_bitmap.h |   2 +
 include/uapi/linux/netfilter/ipset/ip_set_hash.h   |   2 +
 include/uapi/linux/netfilter/ipset/ip_set_list.h   |   2 +
 .../linux/netfilter/nf_conntrack_tuple_common.h    |   3 +
 include/uapi/linux/netfilter/xt_HMARK.h            |   1 +
 include/uapi/linux/netfilter/xt_RATEEST.h          |   1 +
 include/uapi/linux/netfilter/xt_TEE.h              |   2 +
 include/uapi/linux/netfilter/xt_TPROXY.h           |   1 +
 include/uapi/linux/netfilter/xt_hashlimit.h        |   1 +
 include/uapi/linux/netfilter/xt_ipvs.h             |   1 +
 include/uapi/linux/netfilter/xt_mac.h              |   2 +
 include/uapi/linux/netfilter/xt_osf.h              |   2 +
 include/uapi/linux/netfilter/xt_physdev.h          |   2 +-
 include/uapi/linux/netfilter/xt_policy.h           |   2 +
 include/uapi/linux/netfilter/xt_rateest.h          |   1 +
 include/uapi/linux/netfilter/xt_recent.h           |   1 +
 include/uapi/linux/netfilter/xt_sctp.h             |  12 +-
 include/uapi/linux/netfilter_arp/arp_tables.h      |   1 +
 include/uapi/linux/netfilter_bridge.h              |   1 +
 include/uapi/linux/netfilter_bridge/ebt_arp.h      |   1 +
 include/uapi/linux/netfilter_bridge/ebt_arpreply.h |   2 +
 include/uapi/linux/netfilter_bridge/ebt_ip6.h      |   1 +
 include/uapi/linux/netfilter_bridge/ebt_nat.h      |   2 +
 include/uapi/linux/netfilter_bridge/ebtables.h     |   6 +-
 include/uapi/linux/netfilter_ipv4/ip_tables.h      |   1 +
 include/uapi/linux/netfilter_ipv6/ip6_tables.h     |   1 +
 include/uapi/linux/netfilter_ipv6/ip6t_rt.h        |   2 +-
 include/uapi/linux/nfsd/cld.h                      |  14 +-
 include/uapi/linux/omapfb.h                        |   2 +-
 include/uapi/linux/openvswitch.h                   |   4 +-
 include/uapi/linux/packet_diag.h                   |   1 +
 include/uapi/linux/patchkey.h                      |   2 +-
 include/uapi/linux/rds.h                           | 103 ++---
 include/uapi/linux/reiserfs_xattr.h                |   2 +-
 include/uapi/linux/scc.h                           |   1 +
 include/uapi/linux/sctp.h                          |   8 +-
 include/uapi/linux/socket.h                        |   4 +
 include/uapi/linux/sysctl.h                        |   4 +-
 include/uapi/linux/target_core_user.h              |  22 +-
 include/uapi/mtd/mtd-user.h                        |   2 -
 include/uapi/scsi/scsi_bsg_fc.h                    |  54 +--
 include/uapi/scsi/scsi_netlink.h                   |  22 +-
 include/uapi/scsi/scsi_netlink_fc.h                |  16 +-
 include/uapi/sound/emu10k1.h                       |  14 +-
 include/uapi/sound/hdspm.h                         |  40 +-
 include/uapi/xen/gntalloc.h                        |  22 +-
 include/uapi/xen/gntdev.h                          |  34 +-
 include/uapi/xen/privcmd.h                         |  14 +-
 scripts/headers_compile_test.sh                    | 143 +++++++
 scripts/headers_install.sh                         |  14 +-
 105 files changed, 1096 insertions(+), 844 deletions(-)
 create mode 100755 scripts/headers_compile_test.sh

-- 
2.5.0


^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 01/79] headers_install.sh: enhance error handling
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                   ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli

Exit with error if using undefined variables or if any sub command fails
with error return value. unidef needs special handling since but this can
be done without the trap. Enables exaniming intermediate files if some
commands failed.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 scripts/headers_install.sh | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index fdebd66..fe22807 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -1,4 +1,6 @@
 #!/bin/sh
+set -e
+set -u
 
 if [ $# -lt 2 ]
 then
@@ -26,7 +28,6 @@ shift
 # Iterate through files listed on command line
 
 FILE=
-trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
 for i in "$@"
 do
 	FILE="$(basename "$i")"
@@ -37,10 +38,13 @@ do
 		-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
 		-e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
 		-e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
-		"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
+		"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || \
+		( rm -f "$OUTDIR/$FILE.sed" ; exit 1 )
 	scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
-		> "$OUTDIR/$FILE"
-	[ $? -gt 1 ] && exit 1
+		> "$OUTDIR/$FILE" || \
+		( if [ $? -gt 1 ]; then \
+				rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed" ; \
+				exit 1 ; \
+		  fi )
 	rm -f "$OUTDIR/$FILE.sed"
 done
-trap - EXIT
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 01/79] headers_install.sh: enhance error handling Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  7:17   ` Alexander Stein
  2015-10-15  5:55 ` [PATCH v4 03/79] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
                   ` (78 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli

Users of kernel header files would be happier if they did not contain
kernel specific parts and would contain #include statements for all
other header files that they depend on, and in general would compile.

For each header file exported to userspace, this script creates
a simple .c file which just includes the header file. Then it
tries to compile it together with minimal header files from GCC
and libc, and reports results.

Default libc and GCC header file locations are parsed from compiler
configuration.

Kernel headers depend on GCC headers so their path is included in
the test compiler command line.

Some gcc and kernel headers depend on libc headers which are made available
by copying from the compiler default location to a temporary location and
removing possibly existing kernel headers from this directory. This is a bit
of a hack but seems to work in multiple environments.

Tested natively on:

Debian unstable, i586-linux-gnu and gcc 4.9.2
Raspbian Wheezy, arm-linux-gnueabihf and gcc 4.6.3
Ubuntu 12.04 LTS, x86_64-linux-gnu and gcc 4.6.3

Tested cross compilation using standard CROSS_COMPILE=/path/to/gcc with:

arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease)

Execute the script in the directory where kernel header files are installed.
For example:

$ make headers_install
$ cd usr/include
$ ../../scripts/headers_compile_test.sh

Example statistics from 3.18.4 kernel:

130 files failed the compile test.
609 files passed the compile test.

Example error types from 3.18.4 kernel:

$ ../../scripts/headers_compile_test.sh 2>&1 | \
grep error: | sed -e 's/.*error://g' | sort | uniq -c | sort -rn

    352  unknown type name ‘uint32_t’
    134  unknown type name ‘uint64_t’
    103  unknown type name ‘size_t’
     43  unknown type name ‘__kernel_ulong_t’
     38  unknown type name ‘uint8_t’
     24  unknown type name ‘int32_t’
     22  field ‘addr’ has incomplete type
     18  field ‘tstamp’ has incomplete type
     16  unknown type name ‘__kernel_time_t’
     16  field ‘in’ has incomplete type
     16  field ‘in6’ has incomplete type
     14  unknown type name ‘__be16’
     13  ‘IFNAMSIZ’ undeclared here (not in a function)
     12  unknown type name ‘uint16_t’
      9  field ‘ifru_netmask’ has incomplete type
      9  field ‘ifru_hwaddr’ has incomplete type
      9  field ‘ifru_dstaddr’ has incomplete type
      9  field ‘ifru_broadaddr’ has incomplete type
      9  field ‘ifru_addr’ has incomplete type
      8  unknown type name ‘__kernel_pid_t’
      7  unknown type name ‘u_short’
      7  unknown type name ‘pid_t’
      6  invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
      6  field ‘src’ has incomplete type
      6  field ‘audio_tstamp’ has incomplete type
      6  array type has incomplete element type
      5  unknown type name ‘__kernel_long_t’
      5  requested alignment is not an integer constant
      5  field ‘smsk’ has incomplete type
      4  unknown type name ‘__kernel_uid32_t’
      4  unknown type name ‘__kernel_gid32_t’
      4  ‘ETH_ALEN’ undeclared here (not in a function)
      3  unknown type name ‘int64_t’
      3  unknown type name ‘caddr_t’
      3  ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
      3  field ‘trigger_tstamp’ has incomplete type
      3  field ‘src_addr’ has incomplete type
      3  field ‘sin_addr’ has incomplete type
      3  field ‘laddr’ has incomplete type
      3  field ‘id’ has incomplete type
      3  field ‘dmsk’ has incomplete type
      3  field ‘bssid’ has incomplete type
      3  expected specifier-qualifier-list before ‘uint64_t’
      2  unknown type name ‘u_long’
      2  unknown type name ‘stack_t’
      2  unknown type name ‘sigset_t’
      2  unknown type name ‘sa_family_t’
      2  unknown type name ‘__kernel_mode_t’
      2  unknown type name ‘__kernel_key_t’
      2  unknown type name ‘elf_gregset_t’
      2  unknown type name ‘bool’
      2  ‘uint64_t’ undeclared here (not in a function)
      2  ‘true’ undeclared (first use in this function)
      2  ‘NAME_MAX’ undeclared here (not in a function)
      2  ‘__kernel_mode_t’ undeclared here (not in a function)
      2  invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr’
      2  field ‘uc_mcontext’ has incomplete type
      2  field ‘tmsk’ has incomplete type
      2  field ‘tgt’ has incomplete type
      2  field ‘shm_perm’ has incomplete type
      2  field ‘sem_perm’ has incomplete type
      2  field ‘raddr’ has incomplete type
      2  field ‘msg_perm’ has incomplete type
      2  field ‘grp’ has incomplete type
      2  field ‘dst’ has incomplete type
      2  field ‘dst_addr’ has incomplete type
      2  field ‘arp_pa’ has incomplete type
      2  field ‘arp_netmask’ has incomplete type
      2  field ‘arp_ha’ has incomplete type
      2  ‘false’ undeclared (first use in this function)
      1  xen/interface/xen.h: No such file or directory
      1  via_drmclient.h: No such file or directory
      1  unknown type name ‘wait_queue_head_t’
      1  unknown type name ‘snd_seq_client_type_t’
      1  unknown type name ‘int16_t’
      1  unknown type name ‘ino_t’
      1  unknown type name ‘elf_greg_t’
      1  unknown type name ‘elf_fpxregset_t’
      1  unknown type name ‘elf_fpregset_t’
      1  unknown type name ‘__be32’
      1  ‘SIOCDEVPRIVATE’ undeclared here (not in a function)
      1  ‘sa_family_t’ undeclared here (not in a function)
      1  ‘NULL’ undeclared (first use in this function)
      1  ‘MSG_FIN’ undeclared here (not in a function)
      1  ‘MAX_IPOPTLEN’ undeclared here (not in a function)
      1  ‘MAX_ADDR_LEN’ undeclared here (not in a function)
      1  ‘IFHWADDRLEN’ undeclared here (not in a function)
      1  field ‘vmask’ has incomplete type
      1  field ‘vifc_rmt_addr’ has incomplete type
      1  field ‘vifc_lcl_addr’ has incomplete type
      1  field ‘vaddr’ has incomplete type
      1  field ‘uc_chain’ has incomplete type
      1  field ‘tgt_ip’ has incomplete type
      1  field ‘tcp’ has incomplete type
      1  field ‘sw_reserved’ has incomplete type
      1  field ‘sspp_addr’ has incomplete type
      1  field ‘ssp_addr’ has incomplete type
      1  field ‘src_mask’ has incomplete type
      1  field ‘src_ip’ has incomplete type
      1  field ‘spt_address’ has incomplete type
      1  field ‘spp_address’ has incomplete type
      1  field ‘spinfo_address’ has incomplete type
      1  field ‘spc_aaddr’ has incomplete type
      1  field ‘sas_obs_rto_ipaddr’ has incomplete type
      1  field ‘saddr’ has incomplete type
      1  field ‘rtmsg_src’ has incomplete type
      1  field ‘rtmsg_gateway’ has incomplete type
      1  field ‘rtmsg_dst’ has incomplete type
      1  field ‘rt_genmask’ has incomplete type
      1  field ‘rt_gateway’ has incomplete type
      1  field ‘rt_dst’ has incomplete type
      1  field ‘real’ has incomplete type
      1  field ‘prefix’ has incomplete type
      1  field ‘obj_list’ has incomplete type
      1  field ‘mfcc_origin’ has incomplete type
      1  field ‘mfcc_mcastgrp’ has incomplete type
      1  field ‘mf6cc_origin’ has incomplete type
      1  field ‘mf6cc_mcastgrp’ has incomplete type
      1  field ‘mask’ has incomplete type
      1  field ‘ival2’ has incomplete type
      1  field ‘ival1’ has incomplete type
      1  field ‘iph’ has incomplete type
      1  field ‘ip’ has incomplete type
      1  field ‘im_src’ has incomplete type
      1  field ‘im_dst’ has incomplete type
      1  field ‘im6_src’ has incomplete type
      1  field ‘im6_dst’ has incomplete type
      1  field ‘gw’ has incomplete type
      1  field ‘expected’ has incomplete type
      1  field ‘dst_mask’ has incomplete type
      1  field ‘dest_addr’ has incomplete type
      1  field ‘daddr’ has incomplete type
      1  field ‘ap_addr’ has incomplete type
      1  field ‘a6’ has incomplete type
      1  field ‘a4’ has incomplete type
      1  expected specifier-qualifier-list before ‘DECLARE_BITMAP’
      1  expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘snd_seq_client_type_t’
      1  #error "patchkey.h included directly"
      1  ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 scripts/headers_compile_test.sh | 143 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100755 scripts/headers_compile_test.sh

diff --git a/scripts/headers_compile_test.sh b/scripts/headers_compile_test.sh
new file mode 100755
index 0000000..9a73945
--- /dev/null
+++ b/scripts/headers_compile_test.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+# bash due to arithmetics and pipefail
+set -euo pipefail
+
+# Debugging
+#set -x
+
+echo Simple compile test for header files meant for userspace.
+
+# sanity test
+if [ ! -d ./linux ]; then
+	echo Sanity check error: ./linux directory not found
+	echo Should be called in usr/include after \'make headers_install\'.
+	echo Returns number of failed files, 0 if none.
+	exit 1
+fi
+
+# Support CC variable for compiler and ccache, and cross compiling.
+# CC is used without quotes to support CC="ccache gcc".
+set +u
+if [ "$CC"foobar == "foobar" ]; then
+	CC=cc
+fi
+
+if [ "$CROSS_COMPILE"foobar != "foobar" ]; then
+	# Using gcc name since some cross compiler tool chains don't provide
+	# the cc symlink
+	CC="$CROSS_COMPILE"gcc
+fi
+set -u
+
+# Kernel headers refer to some gcc and libc headers so make them available.
+set +u
+if [ "$ARCH_TRIPLET"foobar == "foobar" ]; then
+	# Taking triplet from gcc/cpp
+	ARCH_TRIPLET="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+			grep Target | sed -e 's/Target: //' )"
+fi
+
+if [ "$LIBC"foobar == "foobar" ]; then
+	# trying to grep libc includes from gcc/cpp defaults
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		grep '/usr/include' )"
+
+	# sanity check and prepare LIBC dirs
+	for d in $_TEMP; do
+		if [ ! -d "$d" ]; then
+			echo "$d not a directory"
+			exit 1
+		fi
+		LIBC="$LIBC $d"
+	done
+fi
+set -u
+
+# Copy libc include files to temp directory for the tests.
+
+COMPILE_TEST_INC=../headers_compile_test_include
+rm -rf "$COMPILE_TEST_INC"
+mkdir -p "$COMPILE_TEST_INC"
+
+for d in $LIBC; do
+	# check if last part of dir is the arch triplet, cross compile paths
+	# can have it also elsewhere so just the last one counts.
+	if !( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully just main libc dir, e.g. /usr/include
+		cp -a "$d"/* "$COMPILE_TEST_INC"/
+	elif ( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully the arch specific dir, e.g. /usr/include/x86_64-linux-gnu
+		cp -ar "$d"/* "$COMPILE_TEST_INC/"
+	else
+		echo "$d unexpected, bailing out"
+		exit 1
+	fi
+done
+
+# Simulate libc headers without kernel headers by removing
+# all known kernel header dirs from the copied libc ones.
+# This seems to magically work.
+_KERNEL_DIRS="$( find . -type d | grep -v '^\.$' )"
+( cd "$COMPILE_TEST_INC" && rm -rf $_KERNEL_DIRS )
+
+# GCC headers
+set +u
+if [ "$GCC_INC"foobar == "foobar" ]; then
+	# Take from $CC default system include paths, filter out
+	# /usr/local/include and /usr/include stuff first, then try to match
+	# for gcc.
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		egrep -v '/usr/local/include' | \
+		egrep -v '/usr/include' | \
+		grep gcc | \
+		xargs )"
+
+	# merge and prepare for use with $CC
+	for d in $_TEMP; do
+		# sanity test
+		if [ ! -d "$d" ]; then
+			echo "$d: is not a directory"
+			exit 1
+		fi
+		GCC_INC="$GCC_INC -I $d"
+	done
+fi
+set -u
+
+# For each header file, create a .c which includes the header file
+# and try to compile it using only current directory for searching other
+# included header files.
+_FAILED=0
+_PASSED=0
+for f in $( find . -name "*\.h" | xargs ); do
+	_FAIL=0
+	CFILE="$( echo "$( dirname "$f" )"/"$( basename "$f" .h )".c )"
+
+	# create .c file
+	echo "#include <"$( echo "$f" | sed -e 's|^.\/||' )">" \
+		> "$(dirname "$f")"/"$(basename "$f" .h)".c
+
+	# compile test, CC not quoted to support ccache
+	echo $CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE"
+	$CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE" \
+		|| _FAIL=1
+
+	# report errors
+	if [ "$_FAIL" -gt 0 ]; then
+		echo "FAILED: $f"
+		_FAILED="$(( $_FAILED + 1 ))"
+	else
+		echo "PASSED: $f"
+		_PASSED="$(( $_PASSED + 1))"
+	fi
+done
+
+echo Statistics:
+echo "$_FAILED files failed the compile test."
+echo "$_PASSED files passed the compile test."
+
+exit "$_FAILED"
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 03/79] drm.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 01/79] headers_install.sh: enhance error handling Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
                   ` (77 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fall back to size_t for non Linux platforms.

Fixes userspace compilation error:

drm/drm.h:132:2: error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/drm.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index 3801584..b4e92eb 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -54,6 +54,7 @@ typedef int32_t  __s32;
 typedef uint32_t __u32;
 typedef int64_t  __s64;
 typedef uint64_t __u64;
+typedef size_t   __kernel_size_t;
 typedef unsigned long drm_handle_t;
 
 #endif
@@ -129,11 +130,11 @@ struct drm_version {
 	int version_major;	  /**< Major version */
 	int version_minor;	  /**< Minor version */
 	int version_patchlevel;	  /**< Patch level */
-	size_t name_len;	  /**< Length of name buffer */
+	__kernel_size_t name_len;	  /**< Length of name buffer */
 	char __user *name;	  /**< Name of driver */
-	size_t date_len;	  /**< Length of date buffer */
+	__kernel_size_t date_len;	  /**< Length of date buffer */
 	char __user *date;	  /**< User-space buffer to hold date */
-	size_t desc_len;	  /**< Length of desc buffer */
+	__kernel_size_t desc_len;	  /**< Length of desc buffer */
 	char __user *desc;	  /**< User-space buffer to hold desc */
 };
 
@@ -143,7 +144,7 @@ struct drm_version {
  * \sa drmGetBusid() and drmSetBusId().
  */
 struct drm_unique {
-	size_t unique_len;	  /**< Length of unique */
+	__kernel_size_t unique_len;	  /**< Length of unique */
 	char __user *unique;	  /**< Unique name for driver instantiation */
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (2 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 03/79] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15 13:32     ` Alex Deucher
  2015-10-15  5:55   ` Mikko Rapeli
                   ` (76 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation error:

drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/drm_mode.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index 359107a..0ed8d9d 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
 
 /* create a dumb scanout buffer */
 struct drm_mode_create_dumb {
-	uint32_t height;
-	uint32_t width;
-	uint32_t bpp;
-	uint32_t flags;
+	__u32 height;
+	__u32 width;
+	__u32 bpp;
+	__u32 flags;
 	/* handle, pitch, size will be returned */
-	uint32_t handle;
-	uint32_t pitch;
-	uint64_t size;
+	__u32 handle;
+	__u32 pitch;
+	__u64 size;
 };
 
 /* set up for mmap of a dumb scanout buffer */
@@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
 };
 
 struct drm_mode_destroy_dumb {
-	uint32_t handle;
+	__u32 handle;
 };
 
 /* page-flip flags are valid, plus: */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 01/79] headers_install.sh: enhance error handling Mikko Rapeli
@ 2015-10-15  5:55   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 03/79] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
                     ` (78 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Inki Dae, Joonyoung Shim, Seung-Woo Kim,
	Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski,
	dri-devel, linux-api, linux-arm-kernel, linux-samsung-soc

Fixes userspace compilation error:

drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/exynos_drm.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/uapi/drm/exynos_drm.h b/include/uapi/drm/exynos_drm.h
index 5575ed1..cf431b7 100644
--- a/include/uapi/drm/exynos_drm.h
+++ b/include/uapi/drm/exynos_drm.h
@@ -27,7 +27,7 @@
  *	- this handle will be set by gem module of kernel side.
  */
 struct drm_exynos_gem_create {
-	uint64_t size;
+	__u64 size;
 	unsigned int flags;
 	unsigned int handle;
 };
@@ -44,7 +44,7 @@ struct drm_exynos_gem_create {
 struct drm_exynos_gem_info {
 	unsigned int handle;
 	unsigned int flags;
-	uint64_t size;
+	__u64 size;
 };
 
 /**
@@ -58,7 +58,7 @@ struct drm_exynos_gem_info {
 struct drm_exynos_vidi_connection {
 	unsigned int connection;
 	unsigned int extensions;
-	uint64_t edid;
+	__u64 edid;
 };
 
 /* memory type definitions. */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: Krzysztof Kozlowski, linux-samsung-soc, Joonyoung Shim,
	David Airlie, mikko.rapeli, Seung-Woo Kim, dri-devel, Inki Dae,
	Kyungmin Park, Kukjin Kim, linux-api, linux-arm-kernel

Fixes userspace compilation error:

drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/exynos_drm.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/uapi/drm/exynos_drm.h b/include/uapi/drm/exynos_drm.h
index 5575ed1..cf431b7 100644
--- a/include/uapi/drm/exynos_drm.h
+++ b/include/uapi/drm/exynos_drm.h
@@ -27,7 +27,7 @@
  *	- this handle will be set by gem module of kernel side.
  */
 struct drm_exynos_gem_create {
-	uint64_t size;
+	__u64 size;
 	unsigned int flags;
 	unsigned int handle;
 };
@@ -44,7 +44,7 @@ struct drm_exynos_gem_create {
 struct drm_exynos_gem_info {
 	unsigned int handle;
 	unsigned int flags;
-	uint64_t size;
+	__u64 size;
 };
 
 /**
@@ -58,7 +58,7 @@ struct drm_exynos_gem_info {
 struct drm_exynos_vidi_connection {
 	unsigned int connection;
 	unsigned int extensions;
-	uint64_t edid;
+	__u64 edid;
 };
 
 /* memory type definitions. */
-- 
2.5.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-arm-kernel

Fixes userspace compilation error:

drm/exynos_drm.h:30:2: error: unknown type name ?uint64_t?

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/exynos_drm.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/uapi/drm/exynos_drm.h b/include/uapi/drm/exynos_drm.h
index 5575ed1..cf431b7 100644
--- a/include/uapi/drm/exynos_drm.h
+++ b/include/uapi/drm/exynos_drm.h
@@ -27,7 +27,7 @@
  *	- this handle will be set by gem module of kernel side.
  */
 struct drm_exynos_gem_create {
-	uint64_t size;
+	__u64 size;
 	unsigned int flags;
 	unsigned int handle;
 };
@@ -44,7 +44,7 @@ struct drm_exynos_gem_create {
 struct drm_exynos_gem_info {
 	unsigned int handle;
 	unsigned int flags;
-	uint64_t size;
+	__u64 size;
 };
 
 /**
@@ -58,7 +58,7 @@ struct drm_exynos_gem_info {
 struct drm_exynos_vidi_connection {
 	unsigned int connection;
 	unsigned int extensions;
-	uint64_t edid;
+	__u64 edid;
 };
 
 /* memory type definitions. */
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 06/79] nouveau_drm.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (4 preceding siblings ...)
  2015-10-15  5:55   ` Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 07/79] radeon_drm.h: " Mikko Rapeli
                   ` (74 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

drm/nouveau_drm.h:41:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/nouveau_drm.h | 86 +++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 42 deletions(-)

diff --git a/include/uapi/drm/nouveau_drm.h b/include/uapi/drm/nouveau_drm.h
index 5507eea..3a0a2f1 100644
--- a/include/uapi/drm/nouveau_drm.h
+++ b/include/uapi/drm/nouveau_drm.h
@@ -35,6 +35,8 @@
 #define NOUVEAU_ABI16_DEVICE   0xdddddddd
 #define NOUVEAU_ABI16_CHAN(n) (0xcccc0000 | (n))
 
+#include <drm/drm.h>
+
 #define NOUVEAU_GEM_DOMAIN_CPU       (1 << 0)
 #define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1)
 #define NOUVEAU_GEM_DOMAIN_GART      (1 << 2)
@@ -49,34 +51,34 @@
 #define NOUVEAU_GEM_TILE_NONCONTIG   0x00000008
 
 struct drm_nouveau_gem_info {
-	uint32_t handle;
-	uint32_t domain;
-	uint64_t size;
-	uint64_t offset;
-	uint64_t map_handle;
-	uint32_t tile_mode;
-	uint32_t tile_flags;
+	__u32 handle;
+	__u32 domain;
+	__u64 size;
+	__u64 offset;
+	__u64 map_handle;
+	__u32 tile_mode;
+	__u32 tile_flags;
 };
 
 struct drm_nouveau_gem_new {
 	struct drm_nouveau_gem_info info;
-	uint32_t channel_hint;
-	uint32_t align;
+	__u32 channel_hint;
+	__u32 align;
 };
 
 #define NOUVEAU_GEM_MAX_BUFFERS 1024
 struct drm_nouveau_gem_pushbuf_bo_presumed {
-	uint32_t valid;
-	uint32_t domain;
-	uint64_t offset;
+	__u32 valid;
+	__u32 domain;
+	__u64 offset;
 };
 
 struct drm_nouveau_gem_pushbuf_bo {
-	uint64_t user_priv;
-	uint32_t handle;
-	uint32_t read_domains;
-	uint32_t write_domains;
-	uint32_t valid_domains;
+	__u64 user_priv;
+	__u32 handle;
+	__u32 read_domains;
+	__u32 write_domains;
+	__u32 valid_domains;
 	struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
 };
 
@@ -85,46 +87,46 @@ struct drm_nouveau_gem_pushbuf_bo {
 #define NOUVEAU_GEM_RELOC_OR   (1 << 2)
 #define NOUVEAU_GEM_MAX_RELOCS 1024
 struct drm_nouveau_gem_pushbuf_reloc {
-	uint32_t reloc_bo_index;
-	uint32_t reloc_bo_offset;
-	uint32_t bo_index;
-	uint32_t flags;
-	uint32_t data;
-	uint32_t vor;
-	uint32_t tor;
+	__u32 reloc_bo_index;
+	__u32 reloc_bo_offset;
+	__u32 bo_index;
+	__u32 flags;
+	__u32 data;
+	__u32 vor;
+	__u32 tor;
 };
 
 #define NOUVEAU_GEM_MAX_PUSH 512
 struct drm_nouveau_gem_pushbuf_push {
-	uint32_t bo_index;
-	uint32_t pad;
-	uint64_t offset;
-	uint64_t length;
+	__u32 bo_index;
+	__u32 pad;
+	__u64 offset;
+	__u64 length;
 };
 
 struct drm_nouveau_gem_pushbuf {
-	uint32_t channel;
-	uint32_t nr_buffers;
-	uint64_t buffers;
-	uint32_t nr_relocs;
-	uint32_t nr_push;
-	uint64_t relocs;
-	uint64_t push;
-	uint32_t suffix0;
-	uint32_t suffix1;
-	uint64_t vram_available;
-	uint64_t gart_available;
+	__u32 channel;
+	__u32 nr_buffers;
+	__u64 buffers;
+	__u32 nr_relocs;
+	__u32 nr_push;
+	__u64 relocs;
+	__u64 push;
+	__u32 suffix0;
+	__u32 suffix1;
+	__u64 vram_available;
+	__u64 gart_available;
 };
 
 #define NOUVEAU_GEM_CPU_PREP_NOWAIT                                  0x00000001
 #define NOUVEAU_GEM_CPU_PREP_WRITE                                   0x00000004
 struct drm_nouveau_gem_cpu_prep {
-	uint32_t handle;
-	uint32_t flags;
+	__u32 handle;
+	__u32 flags;
 };
 
 struct drm_nouveau_gem_cpu_fini {
-	uint32_t handle;
+	__u32 handle;
 };
 
 #define DRM_NOUVEAU_GETPARAM           0x00 /* deprecated */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 07/79] radeon_drm.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (5 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 06/79] nouveau_drm.h: use __u32 and " Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 08/79] r128_drm.h: include drm/drm.h Mikko Rapeli
                   ` (73 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Alex Deucher, Christian König, David Airlie,
	dri-devel, linux-api

Fixes userspace compiler error:

drm/radeon_drm.h:794:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/radeon_drm.h | 128 +++++++++++++++++++++---------------------
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h
index 01aa2a8..ccb9bcd 100644
--- a/include/uapi/drm/radeon_drm.h
+++ b/include/uapi/drm/radeon_drm.h
@@ -793,9 +793,9 @@ typedef struct drm_radeon_surface_free {
 #define RADEON_GEM_DOMAIN_VRAM		0x4
 
 struct drm_radeon_gem_info {
-	uint64_t	gart_size;
-	uint64_t	vram_size;
-	uint64_t	vram_visible;
+	__u64	gart_size;
+	__u64	vram_size;
+	__u64	vram_visible;
 };
 
 #define RADEON_GEM_NO_BACKING_STORE	(1 << 0)
@@ -807,11 +807,11 @@ struct drm_radeon_gem_info {
 #define RADEON_GEM_NO_CPU_ACCESS	(1 << 4)
 
 struct drm_radeon_gem_create {
-	uint64_t	size;
-	uint64_t	alignment;
-	uint32_t	handle;
-	uint32_t	initial_domain;
-	uint32_t	flags;
+	__u64	size;
+	__u64	alignment;
+	__u32	handle;
+	__u32	initial_domain;
+	__u32	flags;
 };
 
 /*
@@ -825,10 +825,10 @@ struct drm_radeon_gem_create {
 #define RADEON_GEM_USERPTR_REGISTER	(1 << 3)
 
 struct drm_radeon_gem_userptr {
-	uint64_t		addr;
-	uint64_t		size;
-	uint32_t		flags;
-	uint32_t		handle;
+	__u64		addr;
+	__u64		size;
+	__u32		flags;
+	__u32		handle;
 };
 
 #define RADEON_TILING_MACRO				0x1
@@ -850,72 +850,72 @@ struct drm_radeon_gem_userptr {
 #define RADEON_TILING_EG_STENCIL_TILE_SPLIT_MASK	0xf
 
 struct drm_radeon_gem_set_tiling {
-	uint32_t	handle;
-	uint32_t	tiling_flags;
-	uint32_t	pitch;
+	__u32	handle;
+	__u32	tiling_flags;
+	__u32	pitch;
 };
 
 struct drm_radeon_gem_get_tiling {
-	uint32_t	handle;
-	uint32_t	tiling_flags;
-	uint32_t	pitch;
+	__u32	handle;
+	__u32	tiling_flags;
+	__u32	pitch;
 };
 
 struct drm_radeon_gem_mmap {
-	uint32_t	handle;
-	uint32_t	pad;
-	uint64_t	offset;
-	uint64_t	size;
-	uint64_t	addr_ptr;
+	__u32	handle;
+	__u32	pad;
+	__u64	offset;
+	__u64	size;
+	__u64	addr_ptr;
 };
 
 struct drm_radeon_gem_set_domain {
-	uint32_t	handle;
-	uint32_t	read_domains;
-	uint32_t	write_domain;
+	__u32	handle;
+	__u32	read_domains;
+	__u32	write_domain;
 };
 
 struct drm_radeon_gem_wait_idle {
-	uint32_t	handle;
-	uint32_t	pad;
+	__u32	handle;
+	__u32	pad;
 };
 
 struct drm_radeon_gem_busy {
-	uint32_t	handle;
-	uint32_t        domain;
+	__u32	handle;
+	__u32        domain;
 };
 
 struct drm_radeon_gem_pread {
 	/** Handle for the object being read. */
-	uint32_t handle;
-	uint32_t pad;
+	__u32 handle;
+	__u32 pad;
 	/** Offset into the object to read from */
-	uint64_t offset;
+	__u64 offset;
 	/** Length of data to read */
-	uint64_t size;
+	__u64 size;
 	/** Pointer to write the data into. */
 	/* void *, but pointers are not 32/64 compatible */
-	uint64_t data_ptr;
+	__u64 data_ptr;
 };
 
 struct drm_radeon_gem_pwrite {
 	/** Handle for the object being written to. */
-	uint32_t handle;
-	uint32_t pad;
+	__u32 handle;
+	__u32 pad;
 	/** Offset into the object to write to */
-	uint64_t offset;
+	__u64 offset;
 	/** Length of data to write */
-	uint64_t size;
+	__u64 size;
 	/** Pointer to read the data from. */
 	/* void *, but pointers are not 32/64 compatible */
-	uint64_t data_ptr;
+	__u64 data_ptr;
 };
 
 /* Sets or returns a value associated with a buffer. */
 struct drm_radeon_gem_op {
-	uint32_t	handle; /* buffer */
-	uint32_t	op;     /* RADEON_GEM_OP_* */
-	uint64_t	value;  /* input or return value */
+	__u32	handle; /* buffer */
+	__u32	op;     /* RADEON_GEM_OP_* */
+	__u64	value;  /* input or return value */
 };
 
 #define RADEON_GEM_OP_GET_INITIAL_DOMAIN	0
@@ -935,11 +935,11 @@ struct drm_radeon_gem_op {
 #define RADEON_VM_PAGE_SNOOPED		(1 << 4)
 
 struct drm_radeon_gem_va {
-	uint32_t		handle;
-	uint32_t		operation;
-	uint32_t		vm_id;
-	uint32_t		flags;
-	uint64_t		offset;
+	__u32		handle;
+	__u32		operation;
+	__u32		vm_id;
+	__u32		flags;
+	__u64		offset;
 };
 
 #define RADEON_CHUNK_ID_RELOCS	0x01
@@ -961,29 +961,29 @@ struct drm_radeon_gem_va {
 /* 0 = normal, + = higher priority, - = lower priority */
 
 struct drm_radeon_cs_chunk {
-	uint32_t		chunk_id;
-	uint32_t		length_dw;
-	uint64_t		chunk_data;
+	__u32		chunk_id;
+	__u32		length_dw;
+	__u64		chunk_data;
 };
 
 /* drm_radeon_cs_reloc.flags */
 #define RADEON_RELOC_PRIO_MASK		(0xf << 0)
 
 struct drm_radeon_cs_reloc {
-	uint32_t		handle;
-	uint32_t		read_domains;
-	uint32_t		write_domain;
-	uint32_t		flags;
+	__u32		handle;
+	__u32		read_domains;
+	__u32		write_domain;
+	__u32		flags;
 };
 
 struct drm_radeon_cs {
-	uint32_t		num_chunks;
-	uint32_t		cs_id;
-	/* this points to uint64_t * which point to cs chunks */
-	uint64_t		chunks;
+	__u32		num_chunks;
+	__u32		cs_id;
+	/* this points to __u64 * which point to cs chunks */
+	__u64		chunks;
 	/* updates to the limits after this CS ioctl */
-	uint64_t		gart_limit;
-	uint64_t		vram_limit;
+	__u64		gart_limit;
+	__u64		vram_limit;
 };
 
 #define RADEON_INFO_DEVICE_ID		0x00
@@ -1042,9 +1042,9 @@ struct drm_radeon_cs {
 #define RADEON_INFO_GPU_RESET_COUNTER	0x26
 
 struct drm_radeon_info {
-	uint32_t		request;
-	uint32_t		pad;
-	uint64_t		value;
+	__u32		request;
+	__u32		pad;
+	__u64		value;
 };
 
 /* Those correspond to the tile index to use, this is to explicitly state
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 08/79] r128_drm.h: include drm/drm.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (6 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 07/79] radeon_drm.h: " Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  7:43     ` Daniel Vetter
  2015-10-15  5:55 ` [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h Mikko Rapeli
                   ` (72 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes compile error:

drm/r128_drm.h:156:23: error: array type has incomplete element type
  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/r128_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/r128_drm.h b/include/uapi/drm/r128_drm.h
index 8d8878b..76b0aa3 100644
--- a/include/uapi/drm/r128_drm.h
+++ b/include/uapi/drm/r128_drm.h
@@ -33,6 +33,8 @@
 #ifndef __R128_DRM_H__
 #define __R128_DRM_H__
 
+#include <drm/drm.h>
+
 /* WARNING: If you change any of these defines, make sure to change the
  * defines in the X server file (r128_sarea.h)
  */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (7 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 08/79] r128_drm.h: include drm/drm.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-21 15:01     ` Emil Velikov
  2015-10-15  5:55 ` [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h Mikko Rapeli
                   ` (71 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error:

drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/via_drm.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
index 8b0533c..d19c0e2 100644
--- a/include/uapi/drm/via_drm.h
+++ b/include/uapi/drm/via_drm.h
@@ -33,9 +33,6 @@
 #ifndef _VIA_DEFINES_
 #define _VIA_DEFINES_
 
-#ifndef __KERNEL__
-#include "via_drmclient.h"
-#endif
 
 #define VIA_NR_SAREA_CLIPRECTS		8
 #define VIA_NR_XVMC_PORTS               10
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (8 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-21 14:36     ` Emil Velikov
  2015-10-15  5:55   ` Mikko Rapeli
                   ` (70 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compile error since list_head is not exported to userspace
headers.

Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
https://lkml.org/lkml/2015/6/3/792

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 drivers/gpu/drm/via/via_drv.h | 4 ++++
 include/uapi/drm/via_drm.h    | 4 ----
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
index ef8c500..875e65a 100644
--- a/drivers/gpu/drm/via/via_drv.h
+++ b/drivers/gpu/drm/via/via_drv.h
@@ -102,6 +102,10 @@ typedef struct drm_via_private {
 	uint32_t dma_diff;
 } drm_via_private_t;
 
+struct via_file_private {
+	struct list_head obj_list;
+};
+
 enum via_family {
   VIA_OTHER = 0,     /* Baseline */
   VIA_PRO_GROUP_A,   /* Another video engine and DMA commands */
diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
index d19c0e2..c8c053a 100644
--- a/include/uapi/drm/via_drm.h
+++ b/include/uapi/drm/via_drm.h
@@ -271,8 +271,4 @@ typedef struct drm_via_dmablit {
 	drm_via_blitsync_t sync;
 } drm_via_dmablit_t;
 
-struct via_file_private {
-	struct list_head obj_list;
-};
-
 #endif				/* _VIA_DRM_H_ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 11/79] savage_drm.h: include <drm/drm.h>
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes compiler error:

drm/savage_drm.h:50:24: error: array type has incomplete element type
  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/savage_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/savage_drm.h b/include/uapi/drm/savage_drm.h
index 818d49b..9dc9dc1 100644
--- a/include/uapi/drm/savage_drm.h
+++ b/include/uapi/drm/savage_drm.h
@@ -26,6 +26,8 @@
 #ifndef __SAVAGE_DRM_H__
 #define __SAVAGE_DRM_H__
 
+#include <drm/drm.h>
+
 #ifndef __SAVAGE_SAREA_DEFINES__
 #define __SAVAGE_SAREA_DEFINES__
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 11/79] savage_drm.h: include <drm/drm.h>
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, David Airlie,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes compiler error:

drm/savage_drm.h:50:24: error: array type has incomplete element type
  struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/drm/savage_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/savage_drm.h b/include/uapi/drm/savage_drm.h
index 818d49b..9dc9dc1 100644
--- a/include/uapi/drm/savage_drm.h
+++ b/include/uapi/drm/savage_drm.h
@@ -26,6 +26,8 @@
 #ifndef __SAVAGE_DRM_H__
 #define __SAVAGE_DRM_H__
 
+#include <drm/drm.h>
+
 #ifndef __SAVAGE_SAREA_DEFINES__
 #define __SAVAGE_SAREA_DEFINES__
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (10 preceding siblings ...)
  2015-10-15  5:55   ` Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-21 14:39   ` Emil Velikov
  2015-10-15  5:55 ` [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
                   ` (68 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compile error:

drm/sis_drm.h:68:19: error: field ‘obj_list’ has incomplete type
  struct list_head obj_list;

Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
https://lkml.org/lkml/2015/6/3/792

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 drivers/gpu/drm/sis/sis_drv.h | 4 ++++
 include/uapi/drm/sis_drm.h    | 4 ----
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/sis/sis_drv.h b/drivers/gpu/drm/sis/sis_drv.h
index 16f972b..328f8a7 100644
--- a/drivers/gpu/drm/sis/sis_drv.h
+++ b/drivers/gpu/drm/sis/sis_drv.h
@@ -67,6 +67,10 @@ typedef struct drm_sis_private {
 	struct idr object_idr;
 } drm_sis_private_t;
 
+struct sis_file_private {
+	struct list_head obj_list;
+};
+
 extern int sis_idle(struct drm_device *dev);
 extern void sis_reclaim_buffers_locked(struct drm_device *dev,
 				       struct drm_file *file_priv);
diff --git a/include/uapi/drm/sis_drm.h b/include/uapi/drm/sis_drm.h
index df37632..374858c 100644
--- a/include/uapi/drm/sis_drm.h
+++ b/include/uapi/drm/sis_drm.h
@@ -64,8 +64,4 @@ typedef struct {
 	unsigned long offset, size;
 } drm_sis_fb_t;
 
-struct sis_file_private {
-	struct list_head obj_list;
-};
-
 #endif				/* __SIS_DRM_H__ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (11 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  7:44     ` Daniel Vetter
  2015-10-15  5:55 ` [PATCH v4 14/79] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
                   ` (67 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation error:

error: array type has incomplete element type
struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/i810_drm.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/drm/i810_drm.h b/include/uapi/drm/i810_drm.h
index 7a10bb6..34736ef 100644
--- a/include/uapi/drm/i810_drm.h
+++ b/include/uapi/drm/i810_drm.h
@@ -1,6 +1,8 @@
 #ifndef _I810_DRM_H_
 #define _I810_DRM_H_
 
+#include <drm/drm.h>
+
 /* WARNING: These defines must be the same as what the Xserver uses.
  * if you change them, you must change the defines in the Xserver.
  */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 14/79] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (12 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 15/79] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
                   ` (66 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/vmwgfx_drm.h | 264 +++++++++++++++++++++---------------------
 1 file changed, 132 insertions(+), 132 deletions(-)

diff --git a/include/uapi/drm/vmwgfx_drm.h b/include/uapi/drm/vmwgfx_drm.h
index 05b2049..ef31f44 100644
--- a/include/uapi/drm/vmwgfx_drm.h
+++ b/include/uapi/drm/vmwgfx_drm.h
@@ -111,9 +111,9 @@ enum drm_vmw_handle_type {
  */
 
 struct drm_vmw_getparam_arg {
-	uint64_t value;
-	uint32_t param;
-	uint32_t pad64;
+	__u64 value;
+	__u32 param;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -134,8 +134,8 @@ struct drm_vmw_getparam_arg {
  */
 
 struct drm_vmw_context_arg {
-	int32_t cid;
-	uint32_t pad64;
+	__s32 cid;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -165,7 +165,7 @@ struct drm_vmw_context_arg {
  * @mip_levels: Number of mip levels for each face.
  * An unused face should have 0 encoded.
  * @size_addr: Address of a user-space array of sruct drm_vmw_size
- * cast to an uint64_t for 32-64 bit compatibility.
+ * cast to an __u64 for 32-64 bit compatibility.
  * The size of the array should equal the total number of mipmap levels.
  * @shareable: Boolean whether other clients (as identified by file descriptors)
  * may reference this surface.
@@ -177,12 +177,12 @@ struct drm_vmw_context_arg {
  */
 
 struct drm_vmw_surface_create_req {
-	uint32_t flags;
-	uint32_t format;
-	uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
-	uint64_t size_addr;
-	int32_t shareable;
-	int32_t scanout;
+	__u32 flags;
+	__u32 format;
+	__u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
+	__u64 size_addr;
+	__s32 shareable;
+	__s32 scanout;
 };
 
 /**
@@ -197,7 +197,7 @@ struct drm_vmw_surface_create_req {
  */
 
 struct drm_vmw_surface_arg {
-	int32_t sid;
+	__s32 sid;
 	enum drm_vmw_handle_type handle_type;
 };
 
@@ -213,10 +213,10 @@ struct drm_vmw_surface_arg {
  */
 
 struct drm_vmw_size {
-	uint32_t width;
-	uint32_t height;
-	uint32_t depth;
-	uint32_t pad64;
+	__u32 width;
+	__u32 height;
+	__u32 depth;
+	__u32 pad64;
 };
 
 /**
@@ -284,13 +284,13 @@ union drm_vmw_surface_reference_arg {
 /**
  * struct drm_vmw_execbuf_arg
  *
- * @commands: User-space address of a command buffer cast to an uint64_t.
+ * @commands: User-space address of a command buffer cast to an __u64.
  * @command-size: Size in bytes of the command buffer.
  * @throttle-us: Sleep until software is less than @throttle_us
  * microseconds ahead of hardware. The driver may round this value
  * to the nearest kernel tick.
  * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
- * uint64_t.
+ * __u64.
  * @version: Allows expanding the execbuf ioctl parameters without breaking
  * backwards compatibility, since user-space will always tell the kernel
  * which version it uses.
@@ -302,14 +302,14 @@ union drm_vmw_surface_reference_arg {
 #define DRM_VMW_EXECBUF_VERSION 2
 
 struct drm_vmw_execbuf_arg {
-	uint64_t commands;
-	uint32_t command_size;
-	uint32_t throttle_us;
-	uint64_t fence_rep;
-	uint32_t version;
-	uint32_t flags;
-	uint32_t context_handle;
-	uint32_t pad64;
+	__u64 commands;
+	__u32 command_size;
+	__u32 throttle_us;
+	__u64 fence_rep;
+	__u32 version;
+	__u32 flags;
+	__u32 context_handle;
+	__u32 pad64;
 };
 
 /**
@@ -338,12 +338,12 @@ struct drm_vmw_execbuf_arg {
  */
 
 struct drm_vmw_fence_rep {
-	uint32_t handle;
-	uint32_t mask;
-	uint32_t seqno;
-	uint32_t passed_seqno;
-	uint32_t pad64;
-	int32_t error;
+	__u32 handle;
+	__u32 mask;
+	__u32 seqno;
+	__u32 passed_seqno;
+	__u32 pad64;
+	__s32 error;
 };
 
 /*************************************************************************/
@@ -373,8 +373,8 @@ struct drm_vmw_fence_rep {
  */
 
 struct drm_vmw_alloc_dmabuf_req {
-	uint32_t size;
-	uint32_t pad64;
+	__u32 size;
+	__u32 pad64;
 };
 
 /**
@@ -391,11 +391,11 @@ struct drm_vmw_alloc_dmabuf_req {
  */
 
 struct drm_vmw_dmabuf_rep {
-	uint64_t map_handle;
-	uint32_t handle;
-	uint32_t cur_gmr_id;
-	uint32_t cur_gmr_offset;
-	uint32_t pad64;
+	__u64 map_handle;
+	__u32 handle;
+	__u32 cur_gmr_id;
+	__u32 cur_gmr_offset;
+	__u32 pad64;
 };
 
 /**
@@ -428,8 +428,8 @@ union drm_vmw_alloc_dmabuf_arg {
  */
 
 struct drm_vmw_unref_dmabuf_arg {
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -452,10 +452,10 @@ struct drm_vmw_unref_dmabuf_arg {
  */
 
 struct drm_vmw_rect {
-	int32_t x;
-	int32_t y;
-	uint32_t w;
-	uint32_t h;
+	__s32 x;
+	__s32 y;
+	__u32 w;
+	__u32 h;
 };
 
 /**
@@ -477,21 +477,21 @@ struct drm_vmw_rect {
  */
 
 struct drm_vmw_control_stream_arg {
-	uint32_t stream_id;
-	uint32_t enabled;
+	__u32 stream_id;
+	__u32 enabled;
 
-	uint32_t flags;
-	uint32_t color_key;
+	__u32 flags;
+	__u32 color_key;
 
-	uint32_t handle;
-	uint32_t offset;
-	int32_t format;
-	uint32_t size;
-	uint32_t width;
-	uint32_t height;
-	uint32_t pitch[3];
+	__u32 handle;
+	__u32 offset;
+	__s32 format;
+	__u32 size;
+	__u32 width;
+	__u32 height;
+	__u32 pitch[3];
 
-	uint32_t pad64;
+	__u32 pad64;
 	struct drm_vmw_rect src;
 	struct drm_vmw_rect dst;
 };
@@ -519,12 +519,12 @@ struct drm_vmw_control_stream_arg {
  */
 
 struct drm_vmw_cursor_bypass_arg {
-	uint32_t flags;
-	uint32_t crtc_id;
-	int32_t xpos;
-	int32_t ypos;
-	int32_t xhot;
-	int32_t yhot;
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 xpos;
+	__s32 ypos;
+	__s32 xhot;
+	__s32 yhot;
 };
 
 /*************************************************************************/
@@ -542,8 +542,8 @@ struct drm_vmw_cursor_bypass_arg {
  */
 
 struct drm_vmw_stream_arg {
-	uint32_t stream_id;
-	uint32_t pad64;
+	__u32 stream_id;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -565,7 +565,7 @@ struct drm_vmw_stream_arg {
 /**
  * struct drm_vmw_get_3d_cap_arg
  *
- * @buffer: Pointer to a buffer for capability data, cast to an uint64_t
+ * @buffer: Pointer to a buffer for capability data, cast to an __u64
  * @size: Max size to copy
  *
  * Input argument to the DRM_VMW_GET_3D_CAP_IOCTL
@@ -573,9 +573,9 @@ struct drm_vmw_stream_arg {
  */
 
 struct drm_vmw_get_3d_cap_arg {
-	uint64_t buffer;
-	uint32_t max_size;
-	uint32_t pad64;
+	__u64 buffer;
+	__u32 max_size;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -624,14 +624,14 @@ struct drm_vmw_get_3d_cap_arg {
  */
 
 struct drm_vmw_fence_wait_arg {
-	uint32_t handle;
-	int32_t  cookie_valid;
-	uint64_t kernel_cookie;
-	uint64_t timeout_us;
-	int32_t lazy;
-	int32_t flags;
-	int32_t wait_options;
-	int32_t pad64;
+	__u32 handle;
+	__s32  cookie_valid;
+	__u64 kernel_cookie;
+	__u64 timeout_us;
+	__s32 lazy;
+	__s32 flags;
+	__s32 wait_options;
+	__s32 pad64;
 };
 
 /*************************************************************************/
@@ -655,12 +655,12 @@ struct drm_vmw_fence_wait_arg {
  */
 
 struct drm_vmw_fence_signaled_arg {
-	 uint32_t handle;
-	 uint32_t flags;
-	 int32_t signaled;
-	 uint32_t passed_seqno;
-	 uint32_t signaled_flags;
-	 uint32_t pad64;
+	 __u32 handle;
+	 __u32 flags;
+	 __s32 signaled;
+	 __u32 passed_seqno;
+	 __u32 signaled_flags;
+	 __u32 pad64;
 };
 
 /*************************************************************************/
@@ -681,8 +681,8 @@ struct drm_vmw_fence_signaled_arg {
  */
 
 struct drm_vmw_fence_arg {
-	 uint32_t handle;
-	 uint32_t pad64;
+	 __u32 handle;
+	 __u32 pad64;
 };
 
 
@@ -703,9 +703,9 @@ struct drm_vmw_fence_arg {
 
 struct drm_vmw_event_fence {
 	struct drm_event base;
-	uint64_t user_data;
-	uint32_t tv_sec;
-	uint32_t tv_usec;
+	__u64 user_data;
+	__u32 tv_sec;
+	__u32 tv_usec;
 };
 
 /*
@@ -717,17 +717,17 @@ struct drm_vmw_event_fence {
 /**
  * struct drm_vmw_fence_event_arg
  *
- * @fence_rep: Pointer to fence_rep structure cast to uint64_t or 0 if
+ * @fence_rep: Pointer to fence_rep structure cast to __u64 or 0 if
  * the fence is not supposed to be referenced by user-space.
  * @user_info: Info to be delivered with the event.
  * @handle: Attach the event to this fence only.
  * @flags: A set of flags as defined above.
  */
 struct drm_vmw_fence_event_arg {
-	uint64_t fence_rep;
-	uint64_t user_data;
-	uint32_t handle;
-	uint32_t flags;
+	__u64 fence_rep;
+	__u64 user_data;
+	__u32 handle;
+	__u32 flags;
 };
 
 
@@ -747,7 +747,7 @@ struct drm_vmw_fence_event_arg {
  * @sid: Surface id to present from.
  * @dest_x: X placement coordinate for surface.
  * @dest_y: Y placement coordinate for surface.
- * @clips_ptr: Pointer to an array of clip rects cast to an uint64_t.
+ * @clips_ptr: Pointer to an array of clip rects cast to an __u64.
  * @num_clips: Number of cliprects given relative to the framebuffer origin,
  * in the same coordinate space as the frame buffer.
  * @pad64: Unused 64-bit padding.
@@ -756,13 +756,13 @@ struct drm_vmw_fence_event_arg {
  */
 
 struct drm_vmw_present_arg {
-	uint32_t fb_id;
-	uint32_t sid;
-	int32_t dest_x;
-	int32_t dest_y;
-	uint64_t clips_ptr;
-	uint32_t num_clips;
-	uint32_t pad64;
+	__u32 fb_id;
+	__u32 sid;
+	__s32 dest_x;
+	__s32 dest_y;
+	__u64 clips_ptr;
+	__u32 num_clips;
+	__u32 pad64;
 };
 
 
@@ -780,16 +780,16 @@ struct drm_vmw_present_arg {
  * struct drm_vmw_present_arg
  * @fb_id: fb_id to present / read back from.
  * @num_clips: Number of cliprects.
- * @clips_ptr: Pointer to an array of clip rects cast to an uint64_t.
- * @fence_rep: Pointer to a struct drm_vmw_fence_rep, cast to an uint64_t.
+ * @clips_ptr: Pointer to an array of clip rects cast to an __u64.
+ * @fence_rep: Pointer to a struct drm_vmw_fence_rep, cast to an __u64.
  * If this member is NULL, then the ioctl should not return a fence.
  */
 
 struct drm_vmw_present_readback_arg {
-	 uint32_t fb_id;
-	 uint32_t num_clips;
-	 uint64_t clips_ptr;
-	 uint64_t fence_rep;
+	 __u32 fb_id;
+	 __u32 num_clips;
+	 __u64 clips_ptr;
+	 __u64 fence_rep;
 };
 
 /*************************************************************************/
@@ -805,14 +805,14 @@ struct drm_vmw_present_readback_arg {
  * struct drm_vmw_update_layout_arg
  *
  * @num_outputs: number of active connectors
- * @rects: pointer to array of drm_vmw_rect cast to an uint64_t
+ * @rects: pointer to array of drm_vmw_rect cast to an __u64
  *
  * Input argument to the DRM_VMW_UPDATE_LAYOUT Ioctl.
  */
 struct drm_vmw_update_layout_arg {
-	uint32_t num_outputs;
-	uint32_t pad64;
-	uint64_t rects;
+	__u32 num_outputs;
+	__u32 pad64;
+	__u64 rects;
 };
 
 
@@ -849,10 +849,10 @@ enum drm_vmw_shader_type {
  */
 struct drm_vmw_shader_create_arg {
 	enum drm_vmw_shader_type shader_type;
-	uint32_t size;
-	uint32_t buffer_handle;
-	uint32_t shader_handle;
-	uint64_t offset;
+	__u32 size;
+	__u32 buffer_handle;
+	__u32 shader_handle;
+	__u64 offset;
 };
 
 /*************************************************************************/
@@ -871,8 +871,8 @@ struct drm_vmw_shader_create_arg {
  * Input argument to the DRM_VMW_UNREF_SHADER ioctl.
  */
 struct drm_vmw_shader_arg {
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 /*************************************************************************/
@@ -918,14 +918,14 @@ enum drm_vmw_surface_flags {
  * Part of output argument for the DRM_VMW_GB_SURFACE_REF Ioctl.
  */
 struct drm_vmw_gb_surface_create_req {
-	uint32_t svga3d_flags;
-	uint32_t format;
-	uint32_t mip_levels;
+	__u32 svga3d_flags;
+	__u32 format;
+	__u32 mip_levels;
 	enum drm_vmw_surface_flags drm_surface_flags;
-	uint32_t multisample_count;
-	uint32_t autogen_filter;
-	uint32_t buffer_handle;
-	uint32_t array_size;
+	__u32 multisample_count;
+	__u32 autogen_filter;
+	__u32 buffer_handle;
+	__u32 array_size;
 	struct drm_vmw_size base_size;
 };
 
@@ -944,11 +944,11 @@ struct drm_vmw_gb_surface_create_req {
  * Output argument for the DRM_VMW_GB_SURFACE_CREATE ioctl.
  */
 struct drm_vmw_gb_surface_create_rep {
-	uint32_t handle;
-	uint32_t backup_size;
-	uint32_t buffer_handle;
-	uint32_t buffer_size;
-	uint64_t buffer_map_handle;
+	__u32 handle;
+	__u32 backup_size;
+	__u32 buffer_handle;
+	__u32 buffer_size;
+	__u64 buffer_map_handle;
 };
 
 /**
@@ -1061,8 +1061,8 @@ enum drm_vmw_synccpu_op {
 struct drm_vmw_synccpu_arg {
 	enum drm_vmw_synccpu_op op;
 	enum drm_vmw_synccpu_flags flags;
-	uint32_t handle;
-	uint32_t pad64;
+	__u32 handle;
+	__u32 pad64;
 };
 
 /*************************************************************************/
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 15/79] include/uapi/drm/qxl_drm.h: use __s32, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (13 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 14/79] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 16/79] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
                   ` (65 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, dri-devel, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/drm/qxl_drm.h | 74 +++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 37 deletions(-)

diff --git a/include/uapi/drm/qxl_drm.h b/include/uapi/drm/qxl_drm.h
index ebebd36..dface36 100644
--- a/include/uapi/drm/qxl_drm.h
+++ b/include/uapi/drm/qxl_drm.h
@@ -30,7 +30,7 @@
 /* Please note that modifications to all structs defined here are
  * subject to backwards-compatibility constraints.
  *
- * Do not use pointers, use uint64_t instead for 32 bit / 64 bit user/kernel
+ * Do not use pointers, use __u64 instead for 32 bit / 64 bit user/kernel
  * compatibility Keep fields aligned to their size
  */
 
@@ -48,14 +48,14 @@
 #define DRM_QXL_ALLOC_SURF  0x06
 
 struct drm_qxl_alloc {
-	uint32_t size;
-	uint32_t handle; /* 0 is an invalid handle */
+	__u32 size;
+	__u32 handle; /* 0 is an invalid handle */
 };
 
 struct drm_qxl_map {
-	uint64_t offset; /* use for mmap system call */
-	uint32_t handle;
-	uint32_t pad;
+	__u64 offset; /* use for mmap system call */
+	__u32 handle;
+	__u32 pad;
 };
 
 /*
@@ -68,59 +68,59 @@ struct drm_qxl_map {
 #define QXL_RELOC_TYPE_SURF 2
 
 struct drm_qxl_reloc {
-	uint64_t src_offset; /* offset into src_handle or src buffer */
-	uint64_t dst_offset; /* offset in dest handle */
-	uint32_t src_handle; /* dest handle to compute address from */
-	uint32_t dst_handle; /* 0 if to command buffer */
-	uint32_t reloc_type;
-	uint32_t pad;
+	__u64 src_offset; /* offset into src_handle or src buffer */
+	__u64 dst_offset; /* offset in dest handle */
+	__u32 src_handle; /* dest handle to compute address from */
+	__u32 dst_handle; /* 0 if to command buffer */
+	__u32 reloc_type;
+	__u32 pad;
 };
 
 struct drm_qxl_command {
-	uint64_t	 __user command; /* void* */
-	uint64_t	 __user relocs; /* struct drm_qxl_reloc* */
-	uint32_t		type;
-	uint32_t		command_size;
-	uint32_t		relocs_num;
-	uint32_t                pad;
+	__u64	 __user command; /* void* */
+	__u64	 __user relocs; /* struct drm_qxl_reloc* */
+	__u32		type;
+	__u32		command_size;
+	__u32		relocs_num;
+	__u32                pad;
 };
 
 /* XXX: call it drm_qxl_commands? */
 struct drm_qxl_execbuffer {
-	uint32_t		flags;		/* for future use */
-	uint32_t		commands_num;
-	uint64_t	 __user commands;	/* struct drm_qxl_command* */
+	__u32		flags;		/* for future use */
+	__u32		commands_num;
+	__u64	 __user commands;	/* struct drm_qxl_command* */
 };
 
 struct drm_qxl_update_area {
-	uint32_t handle;
-	uint32_t top;
-	uint32_t left;
-	uint32_t bottom;
-	uint32_t right;
-	uint32_t pad;
+	__u32 handle;
+	__u32 top;
+	__u32 left;
+	__u32 bottom;
+	__u32 right;
+	__u32 pad;
 };
 
 #define QXL_PARAM_NUM_SURFACES 1 /* rom->n_surfaces */
 #define QXL_PARAM_MAX_RELOCS 2
 struct drm_qxl_getparam {
-	uint64_t param;
-	uint64_t value;
+	__u64 param;
+	__u64 value;
 };
 
 /* these are one bit values */
 struct drm_qxl_clientcap {
-	uint32_t index;
-	uint32_t pad;
+	__u32 index;
+	__u32 pad;
 };
 
 struct drm_qxl_alloc_surf {
-	uint32_t format;
-	uint32_t width;
-	uint32_t height;
-	int32_t stride;
-	uint32_t handle;
-	uint32_t pad;
+	__u32 format;
+	__u32 width;
+	__u32 height;
+	__s32 stride;
+	__u32 handle;
+	__u32 pad;
 };
 
 #define DRM_IOCTL_QXL_ALLOC \
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 16/79] include/uapi/linux/agpgart.h: include stdlib.h in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (14 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 15/79] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55   ` Mikko Rapeli
                   ` (64 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David Airlie, linux-api

Fixes userspace compiler error:
error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/agpgart.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/agpgart.h b/include/uapi/linux/agpgart.h
index 4e828cf..f525104 100644
--- a/include/uapi/linux/agpgart.h
+++ b/include/uapi/linux/agpgart.h
@@ -52,6 +52,7 @@
 
 #ifndef __KERNEL__
 #include <linux/types.h>
+#include <stdlib.h>
 
 struct agp_version {
 	__u16 major;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 17/79] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP macro
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:55   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-api

Fixes userspace compilation error:

error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
  DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */

DECLARE_BITMAP macro is not meant for userspace headers and thus
added here as private copy for emu10k.h.

Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
<2168807.4Yxh5gl11Q@wuerfel> and Takashi Iwai <tiwai@suse.de>
in message <s5h1thx88tk.wl-tiwai@suse.de> on lkml.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/emu10k1.h | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
index ec1535b..5175e16 100644
--- a/include/uapi/sound/emu10k1.h
+++ b/include/uapi/sound/emu10k1.h
@@ -34,6 +34,14 @@
 
 #define EMU10K1_FX8010_PCM_COUNT		8
 
+/*
+ * Following definition is copied from linux/types.h to support compiling
+ * this header file in userspace since they are not generally available for
+ * uapi headers.
+ */
+#define __EMU10K1_DECLARE_BITMAP(name,bits) \
+	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
+
 /* instruction set */
 #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
 #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
@@ -300,7 +308,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
 struct snd_emu10k1_fx8010_code {
 	char name[128];
 
-	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
 	__u32 __user *gpr_map;		/* initializers */
 
 	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
@@ -313,11 +321,11 @@ struct snd_emu10k1_fx8010_code {
 	unsigned int gpr_list_control_total; /* total count of GPR controls */
 	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
 
-	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
 	__u32 __user *tram_data_map;	  /* data initializers */
 	__u32 __user *tram_addr_map;	  /* map initializers */
 
-	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
+	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
 	__u32 __user *code;		  /* one instruction - 64 bits */
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 17/79] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP macro
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, alsa-devel, linux-api, Takashi Iwai

Fixes userspace compilation error:

error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
  DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */

DECLARE_BITMAP macro is not meant for userspace headers and thus
added here as private copy for emu10k.h.

Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
<2168807.4Yxh5gl11Q@wuerfel> and Takashi Iwai <tiwai@suse.de>
in message <s5h1thx88tk.wl-tiwai@suse.de> on lkml.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/emu10k1.h | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
index ec1535b..5175e16 100644
--- a/include/uapi/sound/emu10k1.h
+++ b/include/uapi/sound/emu10k1.h
@@ -34,6 +34,14 @@
 
 #define EMU10K1_FX8010_PCM_COUNT		8
 
+/*
+ * Following definition is copied from linux/types.h to support compiling
+ * this header file in userspace since they are not generally available for
+ * uapi headers.
+ */
+#define __EMU10K1_DECLARE_BITMAP(name,bits) \
+	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
+
 /* instruction set */
 #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
 #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
@@ -300,7 +308,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
 struct snd_emu10k1_fx8010_code {
 	char name[128];
 
-	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
 	__u32 __user *gpr_map;		/* initializers */
 
 	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
@@ -313,11 +321,11 @@ struct snd_emu10k1_fx8010_code {
 	unsigned int gpr_list_control_total; /* total count of GPR controls */
 	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
 
-	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
+	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
 	__u32 __user *tram_data_map;	  /* data initializers */
 	__u32 __user *tram_addr_map;	  /* map initializers */
 
-	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
+	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
 	__u32 __user *code;		  /* one instruction - 64 bits */
 };
 
-- 
2.5.0

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (16 preceding siblings ...)
  2015-10-15  5:55   ` Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  8:09     ` Mike Snitzer
  2015-10-15  5:55 ` [PATCH v4 19/79] hsi_char.h: use __u32 " Mikko Rapeli
                   ` (62 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Alasdair Kergon, Mike Snitzer, dm-devel, linux-api

Fixes userspace compilation errors like:

linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/dm-log-userspace.h | 43 ++++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/include/uapi/linux/dm-log-userspace.h b/include/uapi/linux/dm-log-userspace.h
index 0fa0d9e..c5ff216 100644
--- a/include/uapi/linux/dm-log-userspace.h
+++ b/include/uapi/linux/dm-log-userspace.h
@@ -7,6 +7,7 @@
 #ifndef __DM_LOG_USERSPACE_H__
 #define __DM_LOG_USERSPACE_H__
 
+#include <linux/types.h>
 #include <linux/dm-ioctl.h> /* For DM_UUID_LEN */
 
 /*
@@ -147,12 +148,12 @@
 
 /*
  * DM_ULOG_GET_REGION_SIZE corresponds to (found in dm-dirty-log.h):
- * uint32_t (*get_region_size)(struct dm_dirty_log *log);
+ * __u32 (*get_region_size)(struct dm_dirty_log *log);
  *
  * Payload-to-userspace:
  *	None.
  * Payload-to-kernel:
- *	uint64_t - contains the region size
+ *	__u64 - contains the region size
  *
  * The region size is something that was determined at constructor time.
  * It is returned in the payload area and 'data_size' is set to
@@ -168,11 +169,11 @@
  * int (*is_clean)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t - the region to get clean status on
+ *	__u64 - the region to get clean status on
  * Payload-to-kernel:
  *	int64_t  - 1 if clean, 0 otherwise
  *
- * Payload is sizeof(uint64_t) and contains the region for which the clean
+ * Payload is sizeof(__u64) and contains the region for which the clean
  * status is being made.
  *
  * When the request has been processed, user-space must return the
@@ -187,7 +188,7 @@
  *		  int can_block);
  *
  * Payload-to-userspace:
- *	uint64_t - the region to get sync status on
+ *	__u64 - the region to get sync status on
  * Payload-to-kernel:
  *	int64_t - 1 if in-sync, 0 otherwise
  *
@@ -203,7 +204,7 @@
  * Payload-to-userspace:
  *	If the 'integrated_flush' directive is present in the constructor
  *	table, the payload is as same as DM_ULOG_MARK_REGION:
- *		uint64_t [] - region(s) to mark
+ *		__u64 [] - region(s) to mark
  *	else
  *		None
  * Payload-to-kernel:
@@ -225,13 +226,13 @@
  * void (*mark_region)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t [] - region(s) to mark
+ *	__u64 [] - region(s) to mark
  * Payload-to-kernel:
  *	None.
  *
  * Incoming payload contains the one or more regions to mark dirty.
  * The number of regions contained in the payload can be determined from
- * 'data_size/sizeof(uint64_t)'.
+ * 'data_size/sizeof(__u64)'.
  *
  * When the request has been processed, user-space must return the
  * dm_ulog_request to the kernel - setting the 'error' field and clearing
@@ -244,13 +245,13 @@
  * void (*clear_region)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t [] - region(s) to clear
+ *	__u64 [] - region(s) to clear
  * Payload-to-kernel:
  *	None.
  *
  * Incoming payload contains the one or more regions to mark clean.
  * The number of regions contained in the payload can be determined from
- * 'data_size/sizeof(uint64_t)'.
+ * 'data_size/sizeof(__u64)'.
  *
  * When the request has been processed, user-space must return the
  * dm_ulog_request to the kernel - setting the 'error' field and clearing
@@ -267,7 +268,7 @@
  * Payload-to-kernel:
  *	{
  *		int64_t i; -- 1 if recovery necessary, 0 otherwise
- *		uint64_t r; -- The region to recover if i=1
+ *		__u64 r; -- The region to recover if i=1
  *	}
  * 'data_size' should be set appropriately.
  *
@@ -283,7 +284,7 @@
  *
  * Payload-to-userspace:
  *	{
- *		uint64_t - region to set sync state on
+ *		__u64 - region to set sync state on
  *		int64_t  - 0 if not-in-sync, 1 if in-sync
  *	}
  * Payload-to-kernel:
@@ -302,7 +303,7 @@
  * Payload-to-userspace:
  *	None.
  * Payload-to-kernel:
- *	uint64_t - the number of in-sync regions
+ *	__u64 - the number of in-sync regions
  *
  * No incoming payload.  Kernel-bound payload contains the number of
  * regions that are in-sync (in a size_t).
@@ -350,11 +351,11 @@
  * int (*is_remote_recovering)(struct dm_dirty_log *log, region_t region);
  *
  * Payload-to-userspace:
- *	uint64_t - region to determine recovery status on
+ *	__u64 - region to determine recovery status on
  * Payload-to-kernel:
  *	{
  *		int64_t is_recovering;  -- 0 if no, 1 if yes
- *		uint64_t in_sync_hint;  -- lowest region still needing resync
+ *		__u64 in_sync_hint;  -- lowest region still needing resync
  *	}
  *
  * When the request has been processed, user-space must return the
@@ -413,16 +414,16 @@ struct dm_ulog_request {
 	 * differentiate between logs that are being swapped and have the
 	 * same 'uuid'.  (Think "live" and "inactive" device-mapper tables.)
 	 */
-	uint64_t luid;
+	__u64 luid;
 	char uuid[DM_UUID_LEN];
 	char padding[3];        /* Padding because DM_UUID_LEN = 129 */
 
-	uint32_t version;       /* See DM_ULOG_REQUEST_VERSION */
-	int32_t error;          /* Used to report back processing errors */
+	__u32 version;       /* See DM_ULOG_REQUEST_VERSION */
+	__s32 error;          /* Used to report back processing errors */
 
-	uint32_t seq;           /* Sequence number for request */
-	uint32_t request_type;  /* DM_ULOG_* defined above */
-	uint32_t data_size;     /* How much data (not including this struct) */
+	__u32 seq;           /* Sequence number for request */
+	__u32 request_type;  /* DM_ULOG_* defined above */
+	__u32 data_size;     /* How much data (not including this struct) */
 
 	char data[0];
 };
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 19/79] hsi_char.h: use __u32 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (17 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 20/79] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
                   ` (61 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Sebastian Reichel, linux-api

Fixes userspace compiler errors like:

linux/hsi/hsi_char.h:51:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hsi/hsi_char.h | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/include/uapi/linux/hsi/hsi_char.h b/include/uapi/linux/hsi/hsi_char.h
index 76160b4..c00a463 100644
--- a/include/uapi/linux/hsi/hsi_char.h
+++ b/include/uapi/linux/hsi/hsi_char.h
@@ -20,10 +20,11 @@
  * 02110-1301 USA
  */
 
-
 #ifndef __HSI_CHAR_H
 #define __HSI_CHAR_H
 
+#include <linux/types.h>
+
 #define HSI_CHAR_MAGIC		'k'
 #define HSC_IOW(num, dtype)	_IOW(HSI_CHAR_MAGIC, num, dtype)
 #define HSC_IOR(num, dtype)	_IOR(HSI_CHAR_MAGIC, num, dtype)
@@ -48,16 +49,16 @@
 #define HSC_ARB_PRIO		1
 
 struct hsc_rx_config {
-	uint32_t mode;
-	uint32_t flow;
-	uint32_t channels;
+	__u32 mode;
+	__u32 flow;
+	__u32 channels;
 };
 
 struct hsc_tx_config {
-	uint32_t mode;
-	uint32_t channels;
-	uint32_t speed;
-	uint32_t arb_mode;
+	__u32 mode;
+	__u32 channels;
+	__u32 speed;
+	__u32 arb_mode;
 };
 
 #endif /* __HSI_CHAR_H */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 20/79] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (18 preceding siblings ...)
  2015-10-15  5:55 ` [PATCH v4 19/79] hsi_char.h: use __u32 " Mikko Rapeli
@ 2015-10-15  5:55 ` Mikko Rapeli
  2015-10-15  5:55   ` Mikko Rapeli
                   ` (60 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Sebastian Reichel, linux-api

Fixes userspace compilation errors due to missing timespec definition.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hsi/cs-protocol.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/hsi/cs-protocol.h b/include/uapi/linux/hsi/cs-protocol.h
index f153d6e..c8d9f08 100644
--- a/include/uapi/linux/hsi/cs-protocol.h
+++ b/include/uapi/linux/hsi/cs-protocol.h
@@ -26,6 +26,7 @@
 
 #include <linux/types.h>
 #include <linux/ioctl.h>
+#include <linux/time.h>
 
 /* chardev parameters */
 #define CS_DEV_FILE_NAME		"/dev/cmt_speech"
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 21/79] ebtables.h: use __u64 from linux/types.h
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Pablo Neira Ayuso, Jiri Kosina,
	Arturo Borrero Gonzalez, Geert Uytterhoeven, linux-api

Fixes userspace compilation error:

linux/netfilter_bridge/ebtables.h:38:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter_bridge/ebtables.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/netfilter_bridge/ebtables.h b/include/uapi/linux/netfilter_bridge/ebtables.h
index fd2ee50..e3cdf9f 100644
--- a/include/uapi/linux/netfilter_bridge/ebtables.h
+++ b/include/uapi/linux/netfilter_bridge/ebtables.h
@@ -12,6 +12,8 @@
 
 #ifndef _UAPI__LINUX_BRIDGE_EFF_H
 #define _UAPI__LINUX_BRIDGE_EFF_H
+#include <linux/types.h>
+#include <linux/if.h>
 #include <linux/netfilter_bridge.h>
 
 #define EBT_TABLE_MAXNAMELEN 32
@@ -33,8 +35,8 @@ struct xt_match;
 struct xt_target;
 
 struct ebt_counter {
-	uint64_t pcnt;
-	uint64_t bcnt;
+	__u64 pcnt;
+	__u64 bcnt;
 };
 
 struct ebt_replace {
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 21/79] ebtables.h: use __u64 from linux/types.h
@ 2015-10-15  5:55   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:55 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Pablo Neira Ayuso, Jiri Kosina,
	Arturo Borrero Gonzalez, Geert Uytterhoeven,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation error:

linux/netfilter_bridge/ebtables.h:38:2: error: unknown type name ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/netfilter_bridge/ebtables.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/netfilter_bridge/ebtables.h b/include/uapi/linux/netfilter_bridge/ebtables.h
index fd2ee50..e3cdf9f 100644
--- a/include/uapi/linux/netfilter_bridge/ebtables.h
+++ b/include/uapi/linux/netfilter_bridge/ebtables.h
@@ -12,6 +12,8 @@
 
 #ifndef _UAPI__LINUX_BRIDGE_EFF_H
 #define _UAPI__LINUX_BRIDGE_EFF_H
+#include <linux/types.h>
+#include <linux/if.h>
 #include <linux/netfilter_bridge.h>
 
 #define EBT_TABLE_MAXNAMELEN 32
@@ -33,8 +35,8 @@ struct xt_match;
 struct xt_target;
 
 struct ebt_counter {
-	uint64_t pcnt;
-	uint64_t bcnt;
+	__u64 pcnt;
+	__u64 bcnt;
 };
 
 struct ebt_replace {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 22/79] cld.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (20 preceding siblings ...)
  2015-10-15  5:55   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 23/79] rds.h: " Mikko Rapeli
                   ` (58 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, J. Bruce Fields, Jeff Layton, linux-nfs, linux-api

Fixes userspace compilation errors like:

linux/nfsd/cld.h:40:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/nfsd/cld.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/uapi/linux/nfsd/cld.h b/include/uapi/linux/nfsd/cld.h
index f14a9ab..d9f2306 100644
--- a/include/uapi/linux/nfsd/cld.h
+++ b/include/uapi/linux/nfsd/cld.h
@@ -22,6 +22,8 @@
 #ifndef _NFSD_CLD_H
 #define _NFSD_CLD_H
 
+#include <linux/types.h>
+
 /* latest upcall version available */
 #define CLD_UPCALL_VERSION 1
 
@@ -37,18 +39,18 @@ enum cld_command {
 
 /* representation of long-form NFSv4 client ID */
 struct cld_name {
-	uint16_t	cn_len;				/* length of cm_id */
+	__u16	cn_len;				/* length of cm_id */
 	unsigned char	cn_id[NFS4_OPAQUE_LIMIT];	/* client-provided */
 } __attribute__((packed));
 
 /* message struct for communication with userspace */
 struct cld_msg {
-	uint8_t		cm_vers;		/* upcall version */
-	uint8_t		cm_cmd;			/* upcall command */
-	int16_t		cm_status;		/* return code */
-	uint32_t	cm_xid;			/* transaction id */
+	__u8		cm_vers;		/* upcall version */
+	__u8		cm_cmd;			/* upcall command */
+	__s16		cm_status;		/* return code */
+	__u32	cm_xid;			/* transaction id */
 	union {
-		int64_t		cm_gracetime;	/* grace period start time */
+		__s64		cm_gracetime;	/* grace period start time */
 		struct cld_name	cm_name;
 	} __attribute__((packed)) cm_u;
 } __attribute__((packed));
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (21 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 22/79] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15 11:06     ` Sowmini Varadhan
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (57 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David S. Miller, Sowmini Varadhan, linux-api

Fixes userspace compilation errors like:

linux/rds.h:96:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/rds.h | 102 +++++++++++++++++++++++------------------------
 1 file changed, 51 insertions(+), 51 deletions(-)

diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 0f9265c..539f9f8 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -103,8 +103,8 @@
 #define RDS_INFO_LAST			10010
 
 struct rds_info_counter {
-	uint8_t	name[32];
-	uint64_t	value;
+	__u8	name[32];
+	__u64	value;
 } __attribute__((packed));
 
 #define RDS_INFO_CONNECTION_FLAG_SENDING	0x01
@@ -114,35 +114,35 @@ struct rds_info_counter {
 #define TRANSNAMSIZ	16
 
 struct rds_info_connection {
-	uint64_t	next_tx_seq;
-	uint64_t	next_rx_seq;
+	__u64	next_tx_seq;
+	__u64	next_rx_seq;
 	__be32		laddr;
 	__be32		faddr;
-	uint8_t	transport[TRANSNAMSIZ];		/* null term ascii */
-	uint8_t	flags;
+	__u8	transport[TRANSNAMSIZ];		/* null term ascii */
+	__u8	flags;
 } __attribute__((packed));
 
 #define RDS_INFO_MESSAGE_FLAG_ACK               0x01
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK          0x02
 
 struct rds_info_message {
-	uint64_t	seq;
-	uint32_t	len;
+	__u64	seq;
+	__u32	len;
 	__be32		laddr;
 	__be32		faddr;
 	__be16		lport;
 	__be16		fport;
-	uint8_t	flags;
+	__u8	flags;
 } __attribute__((packed));
 
 struct rds_info_socket {
-	uint32_t	sndbuf;
+	__u32	sndbuf;
 	__be32		bound_addr;
 	__be32		connected_addr;
 	__be16		bound_port;
 	__be16		connected_port;
-	uint32_t	rcvbuf;
-	uint64_t	inum;
+	__u32	rcvbuf;
+	__u64	inum;
 } __attribute__((packed));
 
 struct rds_info_tcp_socket {
@@ -150,25 +150,25 @@ struct rds_info_tcp_socket {
 	__be16          local_port;
 	__be32          peer_addr;
 	__be16          peer_port;
-	uint64_t       hdr_rem;
-	uint64_t       data_rem;
-	uint32_t       last_sent_nxt;
-	uint32_t       last_expected_una;
-	uint32_t       last_seen_una;
+	__u64       hdr_rem;
+	__u64       data_rem;
+	__u32       last_sent_nxt;
+	__u32       last_expected_una;
+	__u32       last_seen_una;
 } __attribute__((packed));
 
 #define RDS_IB_GID_LEN	16
 struct rds_info_rdma_connection {
 	__be32		src_addr;
 	__be32		dst_addr;
-	uint8_t		src_gid[RDS_IB_GID_LEN];
-	uint8_t		dst_gid[RDS_IB_GID_LEN];
+	__u8		src_gid[RDS_IB_GID_LEN];
+	__u8		dst_gid[RDS_IB_GID_LEN];
 
-	uint32_t	max_send_wr;
-	uint32_t	max_recv_wr;
-	uint32_t	max_send_sge;
-	uint32_t	rdma_mr_max;
-	uint32_t	rdma_mr_size;
+	__u32	max_send_wr;
+	__u32	max_recv_wr;
+	__u32	max_send_sge;
+	__u32	rdma_mr_max;
+	__u32	rdma_mr_size;
 };
 
 /*
@@ -209,70 +209,70 @@ struct rds_info_rdma_connection {
  * (so that the application does not have to worry about
  * alignment).
  */
-typedef uint64_t	rds_rdma_cookie_t;
+typedef __u64	rds_rdma_cookie_t;
 
 struct rds_iovec {
-	uint64_t	addr;
-	uint64_t	bytes;
+	__u64	addr;
+	__u64	bytes;
 };
 
 struct rds_get_mr_args {
 	struct rds_iovec vec;
-	uint64_t	cookie_addr;
-	uint64_t	flags;
+	__u64	cookie_addr;
+	__u64	flags;
 };
 
 struct rds_get_mr_for_dest_args {
 	struct sockaddr_storage	dest_addr;
 	struct rds_iovec 	vec;
-	uint64_t		cookie_addr;
-	uint64_t		flags;
+	__u64		cookie_addr;
+	__u64		flags;
 };
 
 struct rds_free_mr_args {
 	rds_rdma_cookie_t cookie;
-	uint64_t	flags;
+	__u64	flags;
 };
 
 struct rds_rdma_args {
 	rds_rdma_cookie_t cookie;
 	struct rds_iovec remote_vec;
-	uint64_t	local_vec_addr;
-	uint64_t	nr_local;
-	uint64_t	flags;
-	uint64_t	user_token;
+	__u64	local_vec_addr;
+	__u64	nr_local;
+	__u64	flags;
+	__u64	user_token;
 };
 
 struct rds_atomic_args {
 	rds_rdma_cookie_t cookie;
-	uint64_t 	local_addr;
-	uint64_t 	remote_addr;
+	__u64 	local_addr;
+	__u64 	remote_addr;
 	union {
 		struct {
-			uint64_t	compare;
-			uint64_t	swap;
+			__u64	compare;
+			__u64	swap;
 		} cswp;
 		struct {
-			uint64_t	add;
+			__u64	add;
 		} fadd;
 		struct {
-			uint64_t	compare;
-			uint64_t	swap;
-			uint64_t	compare_mask;
-			uint64_t	swap_mask;
+			__u64	compare;
+			__u64	swap;
+			__u64	compare_mask;
+			__u64	swap_mask;
 		} m_cswp;
 		struct {
-			uint64_t	add;
-			uint64_t	nocarry_mask;
+			__u64	add;
+			__u64	nocarry_mask;
 		} m_fadd;
 	};
-	uint64_t	flags;
-	uint64_t	user_token;
+	__u64	flags;
+	__u64	user_token;
 };
 
 struct rds_rdma_notify {
-	uint64_t	user_token;
-	int32_t		status;
+	__u64	user_token;
+	__s32		status;
 };
 
 #define RDS_RDMA_SUCCESS	0
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 24/79] sctp.h: use __u8 and __u32 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Vlad Yasevich, Neil Horman, linux-sctp, linux-api

Fixes userspace compilation errors like:

linux/sctp.h:652:2: error: unknown type name ‘uint32_t’

Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/sctp.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index ce70fe6..dd0a9c2 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -718,13 +718,13 @@ struct sctp_authkeyid {
  */
 struct sctp_sack_info {
 	sctp_assoc_t	sack_assoc_id;
-	uint32_t	sack_delay;
-	uint32_t	sack_freq;
+	__u32	sack_delay;
+	__u32	sack_freq;
 };
 
 struct sctp_assoc_value {
     sctp_assoc_t            assoc_id;
-    uint32_t                assoc_value;
+    __u32                assoc_value;
 };
 
 /*
@@ -794,7 +794,7 @@ struct sctp_status {
 struct sctp_authchunks {
 	sctp_assoc_t	gauth_assoc_id;
 	__u32		gauth_number_of_chunks;
-	uint8_t		gauth_chunks[];
+	__u8		gauth_chunks[];
 };
 
 /* The broken spelling has been released already in lksctp-tools header,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 24/79] sctp.h: use __u8 and __u32 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Vlad Yasevich, Neil Horman,
	linux-sctp-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation errors like:

linux/sctp.h:652:2: error: unknown type name ‘uint32_t’

Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/sctp.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index ce70fe6..dd0a9c2 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -718,13 +718,13 @@ struct sctp_authkeyid {
  */
 struct sctp_sack_info {
 	sctp_assoc_t	sack_assoc_id;
-	uint32_t	sack_delay;
-	uint32_t	sack_freq;
+	__u32	sack_delay;
+	__u32	sack_freq;
 };
 
 struct sctp_assoc_value {
     sctp_assoc_t            assoc_id;
-    uint32_t                assoc_value;
+    __u32                assoc_value;
 };
 
 /*
@@ -794,7 +794,7 @@ struct sctp_status {
 struct sctp_authchunks {
 	sctp_assoc_t	gauth_assoc_id;
 	__u32		gauth_number_of_chunks;
-	uint8_t		gauth_chunks[];
+	__u8		gauth_chunks[];
 };
 
 /* The broken spelling has been released already in lksctp-tools header,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 24/79] sctp.h: use __u8 and __u32 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Vlad Yasevich, Neil Horman,
	linux-sctp-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation errors like:

linux/sctp.h:652:2: error: unknown type name ‘uint32_t’

Acked-by: Neil Horman <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/sctp.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index ce70fe6..dd0a9c2 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -718,13 +718,13 @@ struct sctp_authkeyid {
  */
 struct sctp_sack_info {
 	sctp_assoc_t	sack_assoc_id;
-	uint32_t	sack_delay;
-	uint32_t	sack_freq;
+	__u32	sack_delay;
+	__u32	sack_freq;
 };
 
 struct sctp_assoc_value {
     sctp_assoc_t            assoc_id;
-    uint32_t                assoc_value;
+    __u32                assoc_value;
 };
 
 /*
@@ -794,7 +794,7 @@ struct sctp_status {
 struct sctp_authchunks {
 	sctp_assoc_t	gauth_assoc_id;
 	__u32		gauth_number_of_chunks;
-	uint8_t		gauth_chunks[];
+	__u8		gauth_chunks[];
 };
 
 /* The broken spelling has been released already in lksctp-tools header,
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 25/79] scsi_bsg_fc.h: use __u8, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (23 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 26/79] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
                   ` (55 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_bsg_fc.h:83:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_bsg_fc.h | 54 +++++++++++++++++++++--------------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/include/uapi/scsi/scsi_bsg_fc.h b/include/uapi/scsi/scsi_bsg_fc.h
index 3031b90..0b3d18a 100644
--- a/include/uapi/scsi/scsi_bsg_fc.h
+++ b/include/uapi/scsi/scsi_bsg_fc.h
@@ -22,6 +22,8 @@
 #ifndef SCSI_BSG_FC_H
 #define SCSI_BSG_FC_H
 
+#include <linux/types.h>
+
 /*
  * This file intended to be included by both kernel and user space
  */
@@ -80,10 +82,10 @@
  * with the transport upon completion of the login.
  */
 struct fc_bsg_host_add_rport {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to login to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -101,10 +103,10 @@ struct fc_bsg_host_add_rport {
  * remain logged in with the remote port.
  */
 struct fc_bsg_host_del_rport {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to logout of */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -125,10 +127,10 @@ struct fc_bsg_host_els {
 	 * ELS Command Code being sent (must be the same as byte 0
 	 * of the payload)
 	 */
-	uint8_t 	command_code;
+	__u8 	command_code;
 
 	/* FC Address Identier of the remote port to send the ELS to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 };
 
 /* Response:
@@ -165,14 +167,14 @@ struct fc_bsg_ctels_reply {
 	 * Note: x_RJT/BSY status will indicae that the rjt_data field
 	 *   is valid and contains the reason/explanation values.
 	 */
-	uint32_t	status;		/* See FC_CTELS_STATUS_xxx */
+	__u32	status;		/* See FC_CTELS_STATUS_xxx */
 
 	/* valid if status is not FC_CTELS_STATUS_OK */
 	struct	{
-		uint8_t	action;		/* fragment_id for CT REJECT */
-		uint8_t	reason_code;
-		uint8_t	reason_explanation;
-		uint8_t	vendor_unique;
+		__u8	action;		/* fragment_id for CT REJECT */
+		__u8	reason_code;
+		__u8	reason_explanation;
+		__u8	vendor_unique;
 	} rjt_data;
 };
 
@@ -188,17 +190,17 @@ struct fc_bsg_ctels_reply {
  * and whether to tear it down after the request.
  */
 struct fc_bsg_host_ct {
-	uint8_t		reserved;
+	__u8		reserved;
 
 	/* FC Address Identier of the remote port to send the ELS to */
-	uint8_t		port_id[3];
+	__u8		port_id[3];
 
 	/*
 	 * We need words 0-2 of the generic preamble for the LLD's
 	 */
-	uint32_t	preamble_word0;	/* revision & IN_ID */
-	uint32_t	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
-	uint32_t	preamble_word2;	/* Cmd Code, Max Size */
+	__u32	preamble_word0;	/* revision & IN_ID */
+	__u32	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
+	__u32	preamble_word2;	/* Cmd Code, Max Size */
 
 };
 /* Response:
@@ -218,17 +220,17 @@ struct fc_bsg_host_vendor {
 	 * Identifies the vendor that the message is formatted for. This
 	 * should be the recipient of the message.
 	 */
-	uint64_t vendor_id;
+	__u64 vendor_id;
 
 	/* start of vendor command area */
-	uint32_t vendor_cmd[0];
+	__u32 vendor_cmd[0];
 };
 
 /* Response:
  */
 struct fc_bsg_host_vendor_reply {
 	/* start of vendor response area */
-	uint32_t vendor_rsp[0];
+	__u32 vendor_rsp[0];
 };
 
 
@@ -247,7 +249,7 @@ struct fc_bsg_rport_els {
 	 * ELS Command Code being sent (must be the same as
 	 * byte 0 of the payload)
 	 */
-	uint8_t els_code;
+	__u8 els_code;
 };
 
 /* Response:
@@ -265,9 +267,9 @@ struct fc_bsg_rport_ct {
 	/*
 	 * We need words 0-2 of the generic preamble for the LLD's
 	 */
-	uint32_t	preamble_word0;	/* revision & IN_ID */
-	uint32_t	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
-	uint32_t	preamble_word2;	/* Cmd Code, Max Size */
+	__u32	preamble_word0;	/* revision & IN_ID */
+	__u32	preamble_word1;	/* GS_Type, GS_SubType, Options, Rsvd */
+	__u32	preamble_word2;	/* Cmd Code, Max Size */
 };
 /* Response:
  *
@@ -279,7 +281,7 @@ struct fc_bsg_rport_ct {
 
 /* request (CDB) structure of the sg_io_v4 */
 struct fc_bsg_request {
-	uint32_t msgcode;
+	__u32 msgcode;
 	union {
 		struct fc_bsg_host_add_rport	h_addrport;
 		struct fc_bsg_host_del_rport	h_delrport;
@@ -303,10 +305,10 @@ struct fc_bsg_reply {
 	 *    msg and status fields. The per-msgcode reply structure
 	 *    will contain valid data.
 	 */
-	uint32_t result;
+	__u32 result;
 
 	/* If there was reply_payload, how much was recevied ? */
-	uint32_t reply_payload_rcv_len;
+	__u32 reply_payload_rcv_len;
 
 	union {
 		struct fc_bsg_host_vendor_reply		vendor_reply;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 26/79] scsi_netlink.h: use __u8, __u16 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (24 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 25/79] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 27/79] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
                   ` (54 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_netlink.h:43:2: error: unknown type name ‘uint8_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_netlink.h | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/include/uapi/scsi/scsi_netlink.h b/include/uapi/scsi/scsi_netlink.h
index 62b4eda..36b53a76 100644
--- a/include/uapi/scsi/scsi_netlink.h
+++ b/include/uapi/scsi/scsi_netlink.h
@@ -22,8 +22,8 @@
 #ifndef SCSI_NETLINK_H
 #define SCSI_NETLINK_H
 
-#include <linux/netlink.h>
 #include <linux/types.h>
+#include <linux/netlink.h>
 
 /*
  * This file intended to be included by both kernel and user space
@@ -40,12 +40,12 @@
 
 /* SCSI_TRANSPORT_MSG event message header */
 struct scsi_nl_hdr {
-	uint8_t version;
-	uint8_t transport;
-	uint16_t magic;
-	uint16_t msgtype;
-	uint16_t msglen;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u8 version;
+	__u8 transport;
+	__u16 magic;
+	__u16 msgtype;
+	__u16 msglen;
+} __attribute__((aligned(sizeof(__u64))));
 
 /* scsi_nl_hdr->version value */
 #define SCSI_NL_VERSION				1
@@ -89,10 +89,10 @@ struct scsi_nl_hdr {
  */
 struct scsi_nl_host_vendor_msg {
 	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
-	uint64_t vendor_id;
-	uint16_t host_no;
-	uint16_t vmsg_datalen;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u64 vendor_id;
+	__u16 host_no;
+	__u16 vmsg_datalen;
+} __attribute__((aligned(sizeof(__u64))));
 
 
 /*
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 27/79] scsi_netlink_fc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (25 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 26/79] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (53 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation errors like:

scsi/scsi_netlink_fc.h:60:2: error: expected specifier-qualifier-list before ‘uint64_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/scsi/scsi_netlink_fc.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/uapi/scsi/scsi_netlink_fc.h b/include/uapi/scsi/scsi_netlink_fc.h
index cbf76e4..2493a0f 100644
--- a/include/uapi/scsi/scsi_netlink_fc.h
+++ b/include/uapi/scsi/scsi_netlink_fc.h
@@ -57,14 +57,14 @@
  */
 struct fc_nl_event {
 	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
-	uint64_t seconds;
-	uint64_t vendor_id;
-	uint16_t host_no;
-	uint16_t event_datalen;
-	uint32_t event_num;
-	uint32_t event_code;
-	uint32_t event_data;
-} __attribute__((aligned(sizeof(uint64_t))));
+	__u64 seconds;
+	__u64 vendor_id;
+	__u16 host_no;
+	__u16 event_datalen;
+	__u32 event_num;
+	__u32 event_code;
+	__u32 event_data;
+} __attribute__((aligned(sizeof(__u64))));
 
 
 #endif /* SCSI_NETLINK_FC_H */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 28/79] hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of stdint.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:56   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-api

Kernel headers should use linux/types.h based definitions.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
 1 file changed, 18 insertions(+), 22 deletions(-)

diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
index 5737332..c4db6f5 100644
--- a/include/uapi/sound/hdspm.h
+++ b/include/uapi/sound/hdspm.h
@@ -20,11 +20,7 @@
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
 #define HDSPM_MAX_CHANNELS      64
@@ -46,15 +42,15 @@ enum hdspm_speed {
 /* -------------------- IOCTL Peak/RMS Meters -------------------- */
 
 struct hdspm_peak_rms {
-	uint32_t input_peaks[64];
-	uint32_t playback_peaks[64];
-	uint32_t output_peaks[64];
+	__u32 input_peaks[64];
+	__u32 playback_peaks[64];
+	__u32 output_peaks[64];
 
-	uint64_t input_rms[64];
-	uint64_t playback_rms[64];
-	uint64_t output_rms[64];
+	__u64 input_rms[64];
+	__u64 playback_rms[64];
+	__u64 output_rms[64];
 
-	uint8_t speed; /* enum {ss, ds, qs} */
+	__u8 speed; /* enum {ss, ds, qs} */
 	int status2;
 };
 
@@ -155,21 +151,21 @@ enum hdspm_syncsource {
 };
 
 struct hdspm_status {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	enum hdspm_syncsource autosync_source;
 
-	uint64_t card_clock;
-	uint32_t master_period;
+	__u64 card_clock;
+	__u32 master_period;
 
 	union {
 		struct {
-			uint8_t sync_wc; /* enum hdspm_sync */
-			uint8_t sync_madi; /* enum hdspm_sync */
-			uint8_t sync_tco; /* enum hdspm_sync */
-			uint8_t sync_in; /* enum hdspm_sync */
-			uint8_t madi_input; /* enum hdspm_madi_input */
-			uint8_t channel_format; /* enum hdspm_madi_channel_format */
-			uint8_t frame_format; /* enum hdspm_madi_frame_format */
+			__u8 sync_wc; /* enum hdspm_sync */
+			__u8 sync_madi; /* enum hdspm_sync */
+			__u8 sync_tco; /* enum hdspm_sync */
+			__u8 sync_in; /* enum hdspm_sync */
+			__u8 madi_input; /* enum hdspm_madi_input */
+			__u8 channel_format; /* enum hdspm_madi_channel_format */
+			__u8 frame_format; /* enum hdspm_madi_frame_format */
 		} madi;
 	} card_specific;
 };
@@ -184,7 +180,7 @@ struct hdspm_status {
 #define HDSPM_ADDON_TCO 1
 
 struct hdspm_version {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	char cardname[20];
 	unsigned int serial;
 	unsigned short firmware_rev;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 28/79] hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of stdint.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, alsa-devel, linux-api, Takashi Iwai

Kernel headers should use linux/types.h based definitions.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
 1 file changed, 18 insertions(+), 22 deletions(-)

diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
index 5737332..c4db6f5 100644
--- a/include/uapi/sound/hdspm.h
+++ b/include/uapi/sound/hdspm.h
@@ -20,11 +20,7 @@
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
 #define HDSPM_MAX_CHANNELS      64
@@ -46,15 +42,15 @@ enum hdspm_speed {
 /* -------------------- IOCTL Peak/RMS Meters -------------------- */
 
 struct hdspm_peak_rms {
-	uint32_t input_peaks[64];
-	uint32_t playback_peaks[64];
-	uint32_t output_peaks[64];
+	__u32 input_peaks[64];
+	__u32 playback_peaks[64];
+	__u32 output_peaks[64];
 
-	uint64_t input_rms[64];
-	uint64_t playback_rms[64];
-	uint64_t output_rms[64];
+	__u64 input_rms[64];
+	__u64 playback_rms[64];
+	__u64 output_rms[64];
 
-	uint8_t speed; /* enum {ss, ds, qs} */
+	__u8 speed; /* enum {ss, ds, qs} */
 	int status2;
 };
 
@@ -155,21 +151,21 @@ enum hdspm_syncsource {
 };
 
 struct hdspm_status {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	enum hdspm_syncsource autosync_source;
 
-	uint64_t card_clock;
-	uint32_t master_period;
+	__u64 card_clock;
+	__u32 master_period;
 
 	union {
 		struct {
-			uint8_t sync_wc; /* enum hdspm_sync */
-			uint8_t sync_madi; /* enum hdspm_sync */
-			uint8_t sync_tco; /* enum hdspm_sync */
-			uint8_t sync_in; /* enum hdspm_sync */
-			uint8_t madi_input; /* enum hdspm_madi_input */
-			uint8_t channel_format; /* enum hdspm_madi_channel_format */
-			uint8_t frame_format; /* enum hdspm_madi_frame_format */
+			__u8 sync_wc; /* enum hdspm_sync */
+			__u8 sync_madi; /* enum hdspm_sync */
+			__u8 sync_tco; /* enum hdspm_sync */
+			__u8 sync_in; /* enum hdspm_sync */
+			__u8 madi_input; /* enum hdspm_madi_input */
+			__u8 channel_format; /* enum hdspm_madi_channel_format */
+			__u8 frame_format; /* enum hdspm_madi_frame_format */
 		} madi;
 	} card_specific;
 };
@@ -184,7 +180,7 @@ struct hdspm_status {
 #define HDSPM_ADDON_TCO 1
 
 struct hdspm_version {
-	uint8_t card_type; /* enum hdspm_io_type */
+	__u8 card_type; /* enum hdspm_io_type */
 	char cardname[20];
 	unsigned int serial;
 	unsigned short firmware_rev;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel, linux-api

Fixes userspace compilation errors like:

xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntalloc.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/include/uapi/xen/gntalloc.h b/include/uapi/xen/gntalloc.h
index 76bd580..48d2790 100644
--- a/include/uapi/xen/gntalloc.h
+++ b/include/uapi/xen/gntalloc.h
@@ -11,6 +11,8 @@
 #ifndef __LINUX_PUBLIC_GNTALLOC_H__
 #define __LINUX_PUBLIC_GNTALLOC_H__
 
+#include <linux/types.h>
+
 /*
  * Allocates a new page and creates a new grant reference.
  */
@@ -19,17 +21,17 @@ _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
 struct ioctl_gntalloc_alloc_gref {
 	/* IN parameters */
 	/* The ID of the domain to be given access to the grants. */
-	uint16_t domid;
+	__u16 domid;
 	/* Flags for this mapping */
-	uint16_t flags;
+	__u16 flags;
 	/* Number of pages to map */
-	uint32_t count;
+	__u32 count;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* The grant references of the newly created grant, one per page */
 	/* Variable size, depending on count */
-	uint32_t gref_ids[1];
+	__u32 gref_ids[1];
 };
 
 #define GNTALLOC_FLAG_WRITABLE 1
@@ -43,9 +45,9 @@ _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
 struct ioctl_gntalloc_dealloc_gref {
 	/* IN parameters */
 	/* The offset returned in the map operation */
-	uint64_t index;
+	__u64 index;
 	/* Number of references to unmap */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -67,11 +69,11 @@ struct ioctl_gntalloc_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation errors like:

xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/xen/gntalloc.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/include/uapi/xen/gntalloc.h b/include/uapi/xen/gntalloc.h
index 76bd580..48d2790 100644
--- a/include/uapi/xen/gntalloc.h
+++ b/include/uapi/xen/gntalloc.h
@@ -11,6 +11,8 @@
 #ifndef __LINUX_PUBLIC_GNTALLOC_H__
 #define __LINUX_PUBLIC_GNTALLOC_H__
 
+#include <linux/types.h>
+
 /*
  * Allocates a new page and creates a new grant reference.
  */
@@ -19,17 +21,17 @@ _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
 struct ioctl_gntalloc_alloc_gref {
 	/* IN parameters */
 	/* The ID of the domain to be given access to the grants. */
-	uint16_t domid;
+	__u16 domid;
 	/* Flags for this mapping */
-	uint16_t flags;
+	__u16 flags;
 	/* Number of pages to map */
-	uint32_t count;
+	__u32 count;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* The grant references of the newly created grant, one per page */
 	/* Variable size, depending on count */
-	uint32_t gref_ids[1];
+	__u32 gref_ids[1];
 };
 
 #define GNTALLOC_FLAG_WRITABLE 1
@@ -43,9 +45,9 @@ _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
 struct ioctl_gntalloc_dealloc_gref {
 	/* IN parameters */
 	/* The offset returned in the map operation */
-	uint64_t index;
+	__u64 index;
 	/* Number of references to unmap */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -67,11 +69,11 @@ struct ioctl_gntalloc_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (27 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (51 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, David Vrabel, linux-api, xen-devel, Boris Ostrovsky

Fixes userspace compilation errors like:

xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntalloc.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/include/uapi/xen/gntalloc.h b/include/uapi/xen/gntalloc.h
index 76bd580..48d2790 100644
--- a/include/uapi/xen/gntalloc.h
+++ b/include/uapi/xen/gntalloc.h
@@ -11,6 +11,8 @@
 #ifndef __LINUX_PUBLIC_GNTALLOC_H__
 #define __LINUX_PUBLIC_GNTALLOC_H__
 
+#include <linux/types.h>
+
 /*
  * Allocates a new page and creates a new grant reference.
  */
@@ -19,17 +21,17 @@ _IOC(_IOC_NONE, 'G', 5, sizeof(struct ioctl_gntalloc_alloc_gref))
 struct ioctl_gntalloc_alloc_gref {
 	/* IN parameters */
 	/* The ID of the domain to be given access to the grants. */
-	uint16_t domid;
+	__u16 domid;
 	/* Flags for this mapping */
-	uint16_t flags;
+	__u16 flags;
 	/* Number of pages to map */
-	uint32_t count;
+	__u32 count;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* The grant references of the newly created grant, one per page */
 	/* Variable size, depending on count */
-	uint32_t gref_ids[1];
+	__u32 gref_ids[1];
 };
 
 #define GNTALLOC_FLAG_WRITABLE 1
@@ -43,9 +45,9 @@ _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref))
 struct ioctl_gntalloc_dealloc_gref {
 	/* IN parameters */
 	/* The offset returned in the map operation */
-	uint64_t index;
+	__u64 index;
 	/* Number of references to unmap */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -67,11 +69,11 @@ struct ioctl_gntalloc_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.5.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 30/79] gntdev.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:56   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel, linux-api

Fixes userspace compilation errors like:

xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntdev.h | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/include/uapi/xen/gntdev.h b/include/uapi/xen/gntdev.h
index 5304bd3..aa7610a 100644
--- a/include/uapi/xen/gntdev.h
+++ b/include/uapi/xen/gntdev.h
@@ -33,11 +33,13 @@
 #ifndef __LINUX_PUBLIC_GNTDEV_H__
 #define __LINUX_PUBLIC_GNTDEV_H__
 
+#include <linux/types.h>
+
 struct ioctl_gntdev_grant_ref {
 	/* The domain ID of the grant to be mapped. */
-	uint32_t domid;
+	__u32 domid;
 	/* The grant reference of the grant to be mapped. */
-	uint32_t ref;
+	__u32 ref;
 };
 
 /*
@@ -50,11 +52,11 @@ _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
 struct ioctl_gntdev_map_grant_ref {
 	/* IN parameters */
 	/* The number of grants to be mapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* Variable IN parameter. */
 	/* Array of grant references, of size @count. */
 	struct ioctl_gntdev_grant_ref refs[1];
@@ -70,10 +72,10 @@ _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
 struct ioctl_gntdev_unmap_grant_ref {
 	/* IN parameters */
 	/* The offset was returned by the corresponding map operation. */
-	uint64_t index;
+	__u64 index;
 	/* The number of pages to be unmapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -93,13 +95,13 @@ _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
 struct ioctl_gntdev_get_offset_for_vaddr {
 	/* IN parameters */
 	/* The virtual address of the first mapped page in a range. */
-	uint64_t vaddr;
+	__u64 vaddr;
 	/* OUT parameters */
 	/* The offset that was used in the initial mmap() operation. */
-	uint64_t offset;
+	__u64 offset;
 	/* The number of pages mapped in the VM area that begins at @vaddr. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -113,7 +115,7 @@ _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
 struct ioctl_gntdev_set_max_grants {
 	/* IN parameter */
 	/* The maximum number of grants that may be mapped at once. */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -135,11 +137,11 @@ struct ioctl_gntdev_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 30/79] gntdev.h: use __u32 and __u64 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, David Vrabel, linux-api, xen-devel, Boris Ostrovsky

Fixes userspace compilation errors like:

xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/xen/gntdev.h | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/include/uapi/xen/gntdev.h b/include/uapi/xen/gntdev.h
index 5304bd3..aa7610a 100644
--- a/include/uapi/xen/gntdev.h
+++ b/include/uapi/xen/gntdev.h
@@ -33,11 +33,13 @@
 #ifndef __LINUX_PUBLIC_GNTDEV_H__
 #define __LINUX_PUBLIC_GNTDEV_H__
 
+#include <linux/types.h>
+
 struct ioctl_gntdev_grant_ref {
 	/* The domain ID of the grant to be mapped. */
-	uint32_t domid;
+	__u32 domid;
 	/* The grant reference of the grant to be mapped. */
-	uint32_t ref;
+	__u32 ref;
 };
 
 /*
@@ -50,11 +52,11 @@ _IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
 struct ioctl_gntdev_map_grant_ref {
 	/* IN parameters */
 	/* The number of grants to be mapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 	/* OUT parameters */
 	/* The offset to be used on a subsequent call to mmap(). */
-	uint64_t index;
+	__u64 index;
 	/* Variable IN parameter. */
 	/* Array of grant references, of size @count. */
 	struct ioctl_gntdev_grant_ref refs[1];
@@ -70,10 +72,10 @@ _IOC(_IOC_NONE, 'G', 1, sizeof(struct ioctl_gntdev_unmap_grant_ref))
 struct ioctl_gntdev_unmap_grant_ref {
 	/* IN parameters */
 	/* The offset was returned by the corresponding map operation. */
-	uint64_t index;
+	__u64 index;
 	/* The number of pages to be unmapped. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -93,13 +95,13 @@ _IOC(_IOC_NONE, 'G', 2, sizeof(struct ioctl_gntdev_get_offset_for_vaddr))
 struct ioctl_gntdev_get_offset_for_vaddr {
 	/* IN parameters */
 	/* The virtual address of the first mapped page in a range. */
-	uint64_t vaddr;
+	__u64 vaddr;
 	/* OUT parameters */
 	/* The offset that was used in the initial mmap() operation. */
-	uint64_t offset;
+	__u64 offset;
 	/* The number of pages mapped in the VM area that begins at @vaddr. */
-	uint32_t count;
-	uint32_t pad;
+	__u32 count;
+	__u32 pad;
 };
 
 /*
@@ -113,7 +115,7 @@ _IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
 struct ioctl_gntdev_set_max_grants {
 	/* IN parameter */
 	/* The maximum number of grants that may be mapped at once. */
-	uint32_t count;
+	__u32 count;
 };
 
 /*
@@ -135,11 +137,11 @@ struct ioctl_gntdev_unmap_notify {
 	 * be cleared. Otherwise, it can be any byte in the page whose
 	 * notification we are adjusting.
 	 */
-	uint64_t index;
+	__u64 index;
 	/* Action(s) to take on unmap */
-	uint32_t action;
+	__u32 action;
 	/* Event channel to notify */
-	uint32_t event_channel_port;
+	__u32 event_channel_port;
 };
 
 /* Clear (set to zero) the byte specified by index */
-- 
2.5.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 31/79] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (30 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 32/79] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
                   ` (48 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Yasuaki Ishimatsu, Prarit Bhargava, Andrew Morton,
	linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/sysctl.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
index 0956373..6595f3a 100644
--- a/include/uapi/linux/sysctl.h
+++ b/include/uapi/linux/sysctl.h
@@ -37,9 +37,9 @@ struct __sysctl_args {
 	int __user *name;
 	int nlen;
 	void __user *oldval;
-	size_t __user *oldlenp;
+	__kernel_size_t __user *oldlenp;
 	void __user *newval;
-	size_t newlen;
+	__kernel_size_t newlen;
 	unsigned long __unused[4];
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 32/79] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (31 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 31/79] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 33/79] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
                   ` (47 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation error:

error: unknown type name ‘__kernel_key_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/ipcbuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/ipcbuf.h b/include/uapi/asm-generic/ipcbuf.h
index 3dbcc1e..909f825 100644
--- a/include/uapi/asm-generic/ipcbuf.h
+++ b/include/uapi/asm-generic/ipcbuf.h
@@ -1,6 +1,8 @@
 #ifndef __ASM_GENERIC_IPCBUF_H
 #define __ASM_GENERIC_IPCBUF_H
 
+#include <linux/posix_types.h>
+
 /*
  * The generic ipc64_perm structure:
  * Note extra padding because this structure is passed back and forth
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 33/79] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (32 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 32/79] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 34/79] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
                   ` (46 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation errors like:

error: field ‘msg_perm’ has incomplete type
struct ipc64_perm msg_perm

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/msgbuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/msgbuf.h b/include/uapi/asm-generic/msgbuf.h
index f55ecc4..f5fbd8e 100644
--- a/include/uapi/asm-generic/msgbuf.h
+++ b/include/uapi/asm-generic/msgbuf.h
@@ -2,6 +2,8 @@
 #define __ASM_GENERIC_MSGBUF_H
 
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+
 /*
  * generic msqid64_ds structure.
  *
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 34/79] include/uapi/asm-generic/shmbuf.h: include fixes
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (33 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 33/79] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (45 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Include linux/types.h and asm/msgbuf.h and use __kernel_size_t instead
of size_t.

Fixes userspace compilation errors like:

error: field ‘shm_perm’ has incomplete type
struct ipc64_perm shm_perm; /* operation perms */
error: unknown type name ‘size_t’
error: unknown type name ‘__kernel_time_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/shmbuf.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/uapi/asm-generic/shmbuf.h b/include/uapi/asm-generic/shmbuf.h
index 7e9fb2f..ae867ad 100644
--- a/include/uapi/asm-generic/shmbuf.h
+++ b/include/uapi/asm-generic/shmbuf.h
@@ -1,7 +1,9 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 
+#include <linux/types.h>
 #include <asm/bitsperlong.h>
+#include <asm/msgbuf.h>
 
 /*
  * The shmid64_ds structure for x86 architecture.
@@ -24,7 +26,7 @@
 
 struct shmid64_ds {
 	struct ipc64_perm	shm_perm;	/* operation perms */
-	size_t			shm_segsz;	/* size of segment (bytes) */
+	__kernel_size_t		shm_segsz;	/* size of segment (bytes) */
 	__kernel_time_t		shm_atime;	/* last attach time */
 #if __BITS_PER_LONG != 64
 	unsigned long		__unused1;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 35/79] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compilation errors like:

error: field ‘msg_perm’ has incomplete type
struct ipc64_perm msg_perm;
error: unknown type name ‘__kernel_ulong_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/sembuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/sembuf.h b/include/uapi/asm-generic/sembuf.h
index 4cb2c13..17d523f 100644
--- a/include/uapi/asm-generic/sembuf.h
+++ b/include/uapi/asm-generic/sembuf.h
@@ -2,6 +2,8 @@
 #define __ASM_GENERIC_SEMBUF_H
 
 #include <asm/bitsperlong.h>
+#include <asm/posix_types.h>
+#include <asm/ipcbuf.h>
 
 /*
  * The semid64_ds structure for x86 architecture.
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 35/79] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation errors like:

error: field ‘msg_perm’ has incomplete type
struct ipc64_perm msg_perm;
error: unknown type name ‘__kernel_ulong_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/asm-generic/sembuf.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/asm-generic/sembuf.h b/include/uapi/asm-generic/sembuf.h
index 4cb2c13..17d523f 100644
--- a/include/uapi/asm-generic/sembuf.h
+++ b/include/uapi/asm-generic/sembuf.h
@@ -2,6 +2,8 @@
 #define __ASM_GENERIC_SEMBUF_H
 
 #include <asm/bitsperlong.h>
+#include <asm/posix_types.h>
+#include <asm/ipcbuf.h>
 
 /*
  * The semid64_ds structure for x86 architecture.
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 36/79] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (35 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 37/79] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
                   ` (43 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compiler error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
index 9df61f1..0a7c415 100644
--- a/include/uapi/asm-generic/signal.h
+++ b/include/uapi/asm-generic/signal.h
@@ -111,7 +111,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 #endif /* __ASSEMBLY__ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 37/79] include/uapi/linux/socket.h: include sys/socket.h in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (36 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 36/79] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
                   ` (42 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

This libc header has sockaddr definition for userspace.

Fixes userspace compilation errors like these from kernel headers including
only linux/socket.h:

error: field ‘ifru_addr’ has incomplete type
struct sockaddr ifru_addr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/socket.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
index 76ab0c6..8a81197 100644
--- a/include/uapi/linux/socket.h
+++ b/include/uapi/linux/socket.h
@@ -1,6 +1,10 @@
 #ifndef _UAPI_LINUX_SOCKET_H
 #define _UAPI_LINUX_SOCKET_H
 
+#ifndef __KERNEL__
+#include <sys/socket.h>
+#endif
+
 /*
  * Desired design of maximum size and alignment (see RFC2553)
  */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (37 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 37/79] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15 11:10     ` Sowmini Varadhan
  2015-10-15  5:56 ` [PATCH v4 39/79] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
                   ` (41 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David S. Miller, Sowmini Varadhan, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘__be32’
error: field ‘dest_addr’ has incomplete type
   struct sockaddr_storage dest_addr;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/rds.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
index 539f9f8..3bf329f 100644
--- a/include/uapi/linux/rds.h
+++ b/include/uapi/linux/rds.h
@@ -35,6 +35,7 @@
 #define _LINUX_RDS_H
 
 #include <linux/types.h>
+#include <linux/socket.h>
 
 #define RDS_IB_ABI_VERSION		0x301
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 39/79] include/uapi/linux/if_pppox.h: include linux/if.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (38 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 40/79] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
                   ` (40 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, netdev, linux-api

Fixes userspace compilation error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppox.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index e128769..473c3c4 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -21,6 +21,7 @@
 #include <asm/byteorder.h>
 
 #include <linux/socket.h>
+#include <linux/if.h>
 #include <linux/if_ether.h>
 #include <linux/if_pppol2tp.h>
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 40/79] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (39 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 39/79] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 41/79] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
                   ` (39 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, David S. Miller, Tom Herbert, Pravin B Shelar,
	Thomas Graf, netdev, linux-api

Fixes userspace compilation errors like:

error: field ‘iph’ has incomplete type
error: field ‘prefix’ has incomplete type

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_tunnel.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index af4de90..8afe695 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -2,6 +2,9 @@
 #define _UAPI_IF_TUNNEL_H_
 
 #include <linux/types.h>
+#include <linux/if.h>
+#include <linux/ip.h>
+#include <linux/in6.h>
 #include <asm/byteorder.h>
 
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 41/79] include/uapi/linux/ipv6_route.h: include linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (40 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 40/79] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 42/79] " Mikko Rapeli
                   ` (38 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compile errors like:

error: field ‘mf6cc_origin’ has incomplete type
  struct sockaddr_in6 mf6cc_origin;  /* Origin of mcast */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mroute6.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/mroute6.h b/include/uapi/linux/mroute6.h
index ce91215..5e17444 100644
--- a/include/uapi/linux/mroute6.h
+++ b/include/uapi/linux/mroute6.h
@@ -3,6 +3,7 @@
 
 #include <linux/types.h>
 #include <linux/sockios.h>
+#include <linux/in6.h>
 
 /*
  *	Based on the MROUTING 3.5 defines primarily to keep
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 42/79] include/uapi/linux/ipv6_route.h: include linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (41 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 41/79] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 43/79] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
                   ` (37 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, David S. Miller, Martin KaFai Lau, linux-api

Fixes userspace compile errors like:

error: field ‘rtmsg_dst’ has incomplete type
  struct in6_addr  rtmsg_dst;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/ipv6_route.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/ipv6_route.h b/include/uapi/linux/ipv6_route.h
index f6598d1..25ab362 100644
--- a/include/uapi/linux/ipv6_route.h
+++ b/include/uapi/linux/ipv6_route.h
@@ -14,6 +14,7 @@
 #define _UAPI_LINUX_IPV6_ROUTE_H
 
 #include <linux/types.h>
+#include <linux/in6.h>
 
 #define RTF_DEFAULT	0x00010000	/* default - learned via ND	*/
 #define RTF_ALLONLINK	0x00020000	/* (deprecated and will be removed)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 43/79] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (42 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 42/79] " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 44/79] include/uapi/linux/if_pppox.h: " Mikko Rapeli
                   ` (36 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, James Chapman, netdev, linux-api

Fixes userspace compilation errors like:

error: field ‘addr’ has incomplete type
 struct sockaddr_in addr; /* IP address and port to send to */
                    ^
error: field ‘addr’ has incomplete type
 struct sockaddr_in6 addr; /* IP address and port to send to */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppol2tp.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/if_pppol2tp.h b/include/uapi/linux/if_pppol2tp.h
index 163e8ad..4bd1f55 100644
--- a/include/uapi/linux/if_pppol2tp.h
+++ b/include/uapi/linux/if_pppol2tp.h
@@ -16,7 +16,8 @@
 #define _UAPI__LINUX_IF_PPPOL2TP_H
 
 #include <linux/types.h>
-
+#include <linux/in.h>
+#include <linux/in6.h>
 
 /* Structure used to connect() the socket to a particular tunnel UDP
  * socket over IPv4.
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 44/79] include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (43 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 43/79] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h Mikko Rapeli
                   ` (35 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, netdev, linux-api

Fixes userspace compilation errors:

error: field ‘addr’ has incomplete type
 struct sockaddr_in addr; /* IP address and port to send to */

error: field ‘addr’ has incomplete type
 struct sockaddr_in6 addr; /* IP address and port to send to */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/if_pppox.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index 473c3c4..d37bbb1 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -24,6 +24,8 @@
 #include <linux/if.h>
 #include <linux/if_ether.h>
 #include <linux/if_pppol2tp.h>
+#include <linux/in.h>
+#include <linux/in6.h>
 
 /* For user-space programs to pick up these definitions
  * which they wouldn't get otherwise without defining __KERNEL__
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (44 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 44/79] include/uapi/linux/if_pppox.h: " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  8:49     ` Frans Klaver
  2015-10-15  5:56 ` [PATCH v4 46/79] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
                   ` (34 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

And include linux/hdlc/ioctl.h from linux/if.h.

Fixes userspace compiler error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Suggested by Frans Klaver <fransklaver@gmail.com> on lkml message
<20150530195223.GA15645@bugger.home>.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hdlc/ioctl.h | 1 +
 include/uapi/linux/if.h         | 6 ++----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 04bc027..d1b1de5 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,6 +1,7 @@
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
 
+#define IFNAMSIZ        16
 
 #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
 
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index 9cf2394..0f98f0a 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -22,10 +22,8 @@
 #include <linux/types.h>		/* for "__kernel_caddr_t" et al	*/
 #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
 #include <linux/compiler.h>		/* for "__user" et al           */
-
-#define	IFNAMSIZ	16
-#define	IFALIASZ	256
-#include <linux/hdlc/ioctl.h>
+#include <linux/hdlc/ioctl.h>           /* for IFNAMSIZ                 */
+#define        IFALIASZ        256
 
 /**
  * enum net_device_flags - &struct net_device flags
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 46/79] include/uapi/linux/packet_diag.h: include linux/netdevice.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (45 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 47/79] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
                   ` (33 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: ‘MAX_ADDR_LEN’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/packet_diag.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
index d08c63f..2a75e97 100644
--- a/include/uapi/linux/packet_diag.h
+++ b/include/uapi/linux/packet_diag.h
@@ -2,6 +2,7 @@
 #define __PACKET_DIAG_H__
 
 #include <linux/types.h>
+#include <linux/netdevice.h>
 
 struct packet_diag_req {
 	__u8	sdiag_family;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 47/79] include/uapi/linux/llc.h: include linux/if.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (46 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 46/79] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (32 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnaldo Carvalho de Melo, linux-api

Fixes userspace compile error:

error: ‘IFHWADDRLEN’ undeclared here (not in a function)
 unsigned char   sllc_mac[IFHWADDRLEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/llc.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/llc.h b/include/uapi/linux/llc.h
index 9c987a4..f503599 100644
--- a/include/uapi/linux/llc.h
+++ b/include/uapi/linux/llc.h
@@ -14,6 +14,7 @@
 #define _UAPI__LINUX_LLC_H
 
 #include <linux/socket.h>
+#include <linux/if.h>
 
 #define __LLC_SOCK_SIZE__ 16	/* sizeof(sockaddr_llc), word align. */
 struct sockaddr_llc {
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 48/79] include/uapi/linux/mqueue.h: include linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compile error:

error: unknown type name ‘__kernel_long_t’
 __kernel_long_t mq_flags; /* message queue flags   */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mqueue.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/mqueue.h b/include/uapi/linux/mqueue.h
index d0a2b8e..bbd5116 100644
--- a/include/uapi/linux/mqueue.h
+++ b/include/uapi/linux/mqueue.h
@@ -18,6 +18,8 @@
 #ifndef _LINUX_MQUEUE_H
 #define _LINUX_MQUEUE_H
 
+#include <linux/types.h>
+
 #define MQ_PRIO_MAX 	32768
 /* per-uid limit of kernel memory used by mqueue, in bytes */
 #define MQ_BYTES_MAX	819200
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 48/79] include/uapi/linux/mqueue.h: include linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compile error:

error: unknown type name ‘__kernel_long_t’
 __kernel_long_t mq_flags; /* message queue flags   */

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/mqueue.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/mqueue.h b/include/uapi/linux/mqueue.h
index d0a2b8e..bbd5116 100644
--- a/include/uapi/linux/mqueue.h
+++ b/include/uapi/linux/mqueue.h
@@ -18,6 +18,8 @@
 #ifndef _LINUX_MQUEUE_H
 #define _LINUX_MQUEUE_H
 
+#include <linux/types.h>
+
 #define MQ_PRIO_MAX 	32768
 /* per-uid limit of kernel memory used by mqueue, in bytes */
 #define MQ_BYTES_MAX	819200
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 49/79] include/uapi/linux/mroute.h: include linux/in.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (48 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (30 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compile errors like:

error: field ‘vifc_lcl_addr’ has incomplete type
 struct in_addr vifc_lcl_addr;     /* Local interface address */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/mroute.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/mroute.h b/include/uapi/linux/mroute.h
index a382d2c..b1f9428 100644
--- a/include/uapi/linux/mroute.h
+++ b/include/uapi/linux/mroute.h
@@ -3,6 +3,7 @@
 
 #include <linux/sockios.h>
 #include <linux/types.h>
+#include <linux/in.h>
 
 /*
  *	Based on the MROUTING 3.5 defines primarily to keep
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 50/79] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)
  char resource_name[DLM_RESNAME_MAXLEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/dlm_netlink.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/dlm_netlink.h b/include/uapi/linux/dlm_netlink.h
index 647c8ef..ef1e2e0 100644
--- a/include/uapi/linux/dlm_netlink.h
+++ b/include/uapi/linux/dlm_netlink.h
@@ -10,6 +10,7 @@
 #define _DLM_NETLINK_H
 
 #include <linux/types.h>
+#include <linux/dlmconstants.h>
 
 enum {
 	DLM_STATUS_WAITING = 1,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 50/79] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation error:

error: ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)
  char resource_name[DLM_RESNAME_MAXLEN];

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/dlm_netlink.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/dlm_netlink.h b/include/uapi/linux/dlm_netlink.h
index 647c8ef..ef1e2e0 100644
--- a/include/uapi/linux/dlm_netlink.h
+++ b/include/uapi/linux/dlm_netlink.h
@@ -10,6 +10,7 @@
 #define _DLM_NETLINK_H
 
 #include <linux/types.h>
+#include <linux/dlmconstants.h>
 
 enum {
 	DLM_STATUS_WAITING = 1,
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 51/79] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (50 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation Mikko Rapeli
                   ` (28 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compile errors like:

error: ‘IFNAMSIZ’ undeclared here (not in a function)
error: field ‘laddr’ has incomplete type
  struct in6_addr laddr; /* local tunnel end-point address */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/ip6_tunnel.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/ip6_tunnel.h b/include/uapi/linux/ip6_tunnel.h
index 48af63c..21cfd62 100644
--- a/include/uapi/linux/ip6_tunnel.h
+++ b/include/uapi/linux/ip6_tunnel.h
@@ -2,6 +2,8 @@
 #define _IP6_TUNNEL_H
 
 #include <linux/types.h>
+#include <linux/if.h>
+#include <linux/in6.h>
 
 #define IPV6_TLV_TNL_ENCAP_LIMIT 4
 #define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (51 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 51/79] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-11-23 16:55   ` Pablo Neira Ayuso
  2015-10-15  5:56 ` [PATCH v4 53/79] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
                   ` (27 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Pablo Neira Ayuso, Patrick McHardy,
	Jozsef Kadlecsik, netfilter-devel, coreteam, linux-api

Add missing header dependencies and other small changes so that each file
compiles alone in userspace.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/netfilter/ipset/ip_set_bitmap.h       |  2 ++
 include/uapi/linux/netfilter/ipset/ip_set_hash.h         |  2 ++
 include/uapi/linux/netfilter/ipset/ip_set_list.h         |  2 ++
 include/uapi/linux/netfilter/nf_conntrack_tuple_common.h |  3 +++
 include/uapi/linux/netfilter/xt_HMARK.h                  |  1 +
 include/uapi/linux/netfilter/xt_RATEEST.h                |  1 +
 include/uapi/linux/netfilter/xt_TEE.h                    |  2 ++
 include/uapi/linux/netfilter/xt_TPROXY.h                 |  1 +
 include/uapi/linux/netfilter/xt_hashlimit.h              |  1 +
 include/uapi/linux/netfilter/xt_ipvs.h                   |  1 +
 include/uapi/linux/netfilter/xt_mac.h                    |  2 ++
 include/uapi/linux/netfilter/xt_osf.h                    |  2 ++
 include/uapi/linux/netfilter/xt_physdev.h                |  2 +-
 include/uapi/linux/netfilter/xt_policy.h                 |  2 ++
 include/uapi/linux/netfilter/xt_rateest.h                |  1 +
 include/uapi/linux/netfilter/xt_recent.h                 |  1 +
 include/uapi/linux/netfilter/xt_sctp.h                   | 12 ++++++------
 include/uapi/linux/netfilter_arp/arp_tables.h            |  1 +
 include/uapi/linux/netfilter_bridge.h                    |  1 +
 include/uapi/linux/netfilter_bridge/ebt_arp.h            |  1 +
 include/uapi/linux/netfilter_bridge/ebt_arpreply.h       |  2 ++
 include/uapi/linux/netfilter_bridge/ebt_ip6.h            |  1 +
 include/uapi/linux/netfilter_bridge/ebt_nat.h            |  2 ++
 include/uapi/linux/netfilter_ipv4/ip_tables.h            |  1 +
 include/uapi/linux/netfilter_ipv6/ip6_tables.h           |  1 +
 include/uapi/linux/netfilter_ipv6/ip6t_rt.h              |  2 +-
 26 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
index 6a2c038..fd5024d 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_bitmap.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_BITMAP_H
 #define _UAPI__IP_SET_BITMAP_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* Bitmap type specific error codes */
 enum {
 	/* The element is out of the range of the set */
diff --git a/include/uapi/linux/netfilter/ipset/ip_set_hash.h b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
index 352eecc..82deeb8 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_hash.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_hash.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_HASH_H
 #define _UAPI__IP_SET_HASH_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* Hash type specific error codes */
 enum {
 	/* Hash is full */
diff --git a/include/uapi/linux/netfilter/ipset/ip_set_list.h b/include/uapi/linux/netfilter/ipset/ip_set_list.h
index a44efaa..84d4303 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set_list.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set_list.h
@@ -1,6 +1,8 @@
 #ifndef _UAPI__IP_SET_LIST_H
 #define _UAPI__IP_SET_LIST_H
 
+#include <linux/netfilter/ipset/ip_set.h>
+
 /* List type specific error codes */
 enum {
 	/* Set name to be added/deleted/tested does not exist. */
diff --git a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
index 2f6bbc5..a9c3834 100644
--- a/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
+++ b/include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
@@ -1,6 +1,9 @@
 #ifndef _NF_CONNTRACK_TUPLE_COMMON_H
 #define _NF_CONNTRACK_TUPLE_COMMON_H
 
+#include <linux/types.h>
+#include <linux/netfilter.h>
+
 enum ip_conntrack_dir {
 	IP_CT_DIR_ORIGINAL,
 	IP_CT_DIR_REPLY,
diff --git a/include/uapi/linux/netfilter/xt_HMARK.h b/include/uapi/linux/netfilter/xt_HMARK.h
index 826fc58..3fb48c8 100644
--- a/include/uapi/linux/netfilter/xt_HMARK.h
+++ b/include/uapi/linux/netfilter/xt_HMARK.h
@@ -2,6 +2,7 @@
 #define XT_HMARK_H_
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_HMARK_SADDR_MASK,
diff --git a/include/uapi/linux/netfilter/xt_RATEEST.h b/include/uapi/linux/netfilter/xt_RATEEST.h
index 6605e20..ec1b570 100644
--- a/include/uapi/linux/netfilter/xt_RATEEST.h
+++ b/include/uapi/linux/netfilter/xt_RATEEST.h
@@ -2,6 +2,7 @@
 #define _XT_RATEEST_TARGET_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 struct xt_rateest_target_info {
 	char			name[IFNAMSIZ];
diff --git a/include/uapi/linux/netfilter/xt_TEE.h b/include/uapi/linux/netfilter/xt_TEE.h
index 5c21d5c..0109202 100644
--- a/include/uapi/linux/netfilter/xt_TEE.h
+++ b/include/uapi/linux/netfilter/xt_TEE.h
@@ -1,6 +1,8 @@
 #ifndef _XT_TEE_TARGET_H
 #define _XT_TEE_TARGET_H
 
+#include <linux/netfilter.h>
+
 struct xt_tee_tginfo {
 	union nf_inet_addr gw;
 	char oif[16];
diff --git a/include/uapi/linux/netfilter/xt_TPROXY.h b/include/uapi/linux/netfilter/xt_TPROXY.h
index 902043c..8d693ee 100644
--- a/include/uapi/linux/netfilter/xt_TPROXY.h
+++ b/include/uapi/linux/netfilter/xt_TPROXY.h
@@ -2,6 +2,7 @@
 #define _XT_TPROXY_H
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 /* TPROXY target is capable of marking the packet to perform
  * redirection. We can get rid of that whenever we get support for
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
index cbfc43d..6db90372 100644
--- a/include/uapi/linux/netfilter/xt_hashlimit.h
+++ b/include/uapi/linux/netfilter/xt_hashlimit.h
@@ -2,6 +2,7 @@
 #define _UAPI_XT_HASHLIMIT_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 /* timings are in milliseconds. */
 #define XT_HASHLIMIT_SCALE 10000
diff --git a/include/uapi/linux/netfilter/xt_ipvs.h b/include/uapi/linux/netfilter/xt_ipvs.h
index eff34ac..e03b9c3 100644
--- a/include/uapi/linux/netfilter/xt_ipvs.h
+++ b/include/uapi/linux/netfilter/xt_ipvs.h
@@ -2,6 +2,7 @@
 #define _XT_IPVS_H
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_IPVS_IPVS_PROPERTY =	1 << 0, /* all other options imply this one */
diff --git a/include/uapi/linux/netfilter/xt_mac.h b/include/uapi/linux/netfilter/xt_mac.h
index b892cdc..9a19a08 100644
--- a/include/uapi/linux/netfilter/xt_mac.h
+++ b/include/uapi/linux/netfilter/xt_mac.h
@@ -1,6 +1,8 @@
 #ifndef _XT_MAC_H
 #define _XT_MAC_H
 
+#include <linux/if_ether.h>
+
 struct xt_mac_info {
     unsigned char srcaddr[ETH_ALEN];
     int invert;
diff --git a/include/uapi/linux/netfilter/xt_osf.h b/include/uapi/linux/netfilter/xt_osf.h
index 5d66cae..e615995 100644
--- a/include/uapi/linux/netfilter/xt_osf.h
+++ b/include/uapi/linux/netfilter/xt_osf.h
@@ -20,6 +20,8 @@
 #define _XT_OSF_H
 
 #include <linux/types.h>
+#include <linux/ip.h>
+#include <linux/tcp.h>
 
 #define MAXGENRELEN		32
 
diff --git a/include/uapi/linux/netfilter/xt_physdev.h b/include/uapi/linux/netfilter/xt_physdev.h
index db7a298..ccdde87 100644
--- a/include/uapi/linux/netfilter/xt_physdev.h
+++ b/include/uapi/linux/netfilter/xt_physdev.h
@@ -2,7 +2,7 @@
 #define _UAPI_XT_PHYSDEV_H
 
 #include <linux/types.h>
-
+#include <linux/if.h>
 
 #define XT_PHYSDEV_OP_IN		0x01
 #define XT_PHYSDEV_OP_OUT		0x02
diff --git a/include/uapi/linux/netfilter/xt_policy.h b/include/uapi/linux/netfilter/xt_policy.h
index be8ead0..d8a9800 100644
--- a/include/uapi/linux/netfilter/xt_policy.h
+++ b/include/uapi/linux/netfilter/xt_policy.h
@@ -2,6 +2,8 @@
 #define _XT_POLICY_H
 
 #include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
 
 #define XT_POLICY_MAX_ELEM	4
 
diff --git a/include/uapi/linux/netfilter/xt_rateest.h b/include/uapi/linux/netfilter/xt_rateest.h
index d40a619..13fe50d 100644
--- a/include/uapi/linux/netfilter/xt_rateest.h
+++ b/include/uapi/linux/netfilter/xt_rateest.h
@@ -2,6 +2,7 @@
 #define _XT_RATEEST_MATCH_H
 
 #include <linux/types.h>
+#include <linux/if.h>
 
 enum xt_rateest_match_flags {
 	XT_RATEEST_MATCH_INVERT	= 1<<0,
diff --git a/include/uapi/linux/netfilter/xt_recent.h b/include/uapi/linux/netfilter/xt_recent.h
index 6ef36c1..955d562 100644
--- a/include/uapi/linux/netfilter/xt_recent.h
+++ b/include/uapi/linux/netfilter/xt_recent.h
@@ -2,6 +2,7 @@
 #define _LINUX_NETFILTER_XT_RECENT_H 1
 
 #include <linux/types.h>
+#include <linux/netfilter.h>
 
 enum {
 	XT_RECENT_CHECK    = 1 << 0,
diff --git a/include/uapi/linux/netfilter/xt_sctp.h b/include/uapi/linux/netfilter/xt_sctp.h
index 29287be..58ffcfb 100644
--- a/include/uapi/linux/netfilter/xt_sctp.h
+++ b/include/uapi/linux/netfilter/xt_sctp.h
@@ -66,26 +66,26 @@ struct xt_sctp_info {
 
 #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) \
 	__sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
-static inline bool
+static inline _Bool
 __sctp_chunkmap_is_clear(const __u32 *chunkmap, unsigned int n)
 {
 	unsigned int i;
 	for (i = 0; i < n; ++i)
 		if (chunkmap[i])
-			return false;
-	return true;
+			return 0;
+	return 1;
 }
 
 #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) \
 	__sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
-static inline bool
+static inline _Bool
 __sctp_chunkmap_is_all_set(const __u32 *chunkmap, unsigned int n)
 {
 	unsigned int i;
 	for (i = 0; i < n; ++i)
 		if (chunkmap[i] != ~0U)
-			return false;
-	return true;
+			return 0;
+	return 1;
 }
 
 #endif /* _XT_SCTP_H_ */
diff --git a/include/uapi/linux/netfilter_arp/arp_tables.h b/include/uapi/linux/netfilter_arp/arp_tables.h
index a5a86a4..ece3ad4 100644
--- a/include/uapi/linux/netfilter_arp/arp_tables.h
+++ b/include/uapi/linux/netfilter_arp/arp_tables.h
@@ -11,6 +11,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_arp.h>
 
 #include <linux/netfilter/x_tables.h>
diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index a5eda6d..514519b 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -4,6 +4,7 @@
 /* bridge-specific defines for netfilter. 
  */
 
+#include <linux/in.h>
 #include <linux/netfilter.h>
 #include <linux/if_ether.h>
 #include <linux/if_vlan.h>
diff --git a/include/uapi/linux/netfilter_bridge/ebt_arp.h b/include/uapi/linux/netfilter_bridge/ebt_arp.h
index 522f3e4..dd4df25 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arp.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arp.h
@@ -2,6 +2,7 @@
 #define __LINUX_BRIDGE_EBT_ARP_H
 
 #include <linux/types.h>
+#include <linux/if_ether.h>
 
 #define EBT_ARP_OPCODE 0x01
 #define EBT_ARP_HTYPE 0x02
diff --git a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
index 7e77896..6fee340 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_arpreply.h
@@ -1,6 +1,8 @@
 #ifndef __LINUX_BRIDGE_EBT_ARPREPLY_H
 #define __LINUX_BRIDGE_EBT_ARPREPLY_H
 
+#include <linux/if_ether.h>
+
 struct ebt_arpreply_info {
 	unsigned char mac[ETH_ALEN];
 	int target;
diff --git a/include/uapi/linux/netfilter_bridge/ebt_ip6.h b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
index 42b8896..a062f0c 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_ip6.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_ip6.h
@@ -13,6 +13,7 @@
 #define __LINUX_BRIDGE_EBT_IP6_H
 
 #include <linux/types.h>
+#include <linux/in6.h>
 
 #define EBT_IP6_SOURCE 0x01
 #define EBT_IP6_DEST 0x02
diff --git a/include/uapi/linux/netfilter_bridge/ebt_nat.h b/include/uapi/linux/netfilter_bridge/ebt_nat.h
index 5e74e3b..c990d74 100644
--- a/include/uapi/linux/netfilter_bridge/ebt_nat.h
+++ b/include/uapi/linux/netfilter_bridge/ebt_nat.h
@@ -1,6 +1,8 @@
 #ifndef __LINUX_BRIDGE_EBT_NAT_H
 #define __LINUX_BRIDGE_EBT_NAT_H
 
+#include <linux/if_ether.h>
+
 #define NAT_ARP_BIT  (0x00000010)
 struct ebt_nat_info {
 	unsigned char mac[ETH_ALEN];
diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h
index f1e6ef2..d0da53d 100644
--- a/include/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -17,6 +17,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_ipv4.h>
 
 #include <linux/netfilter/x_tables.h>
diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
index 649c680..d1b2265 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -17,6 +17,7 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <linux/if.h>
 #include <linux/netfilter_ipv6.h>
 
 #include <linux/netfilter/x_tables.h>
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
index 7605a5f..558f81e 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_rt.h
@@ -2,7 +2,7 @@
 #define _IP6T_RT_H
 
 #include <linux/types.h>
-/*#include <linux/in6.h>*/
+#include <linux/in6.h>
 
 #define IP6T_RT_HOPS 16
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 53/79] include/uapi/linux/errqueue.h: include linux/time.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (52 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (26 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: array type has incomplete element type
 struct timespec ts[3];

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/errqueue.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index 07bdce1..6b1cdc6 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -2,6 +2,7 @@
 #define _UAPI_LINUX_ERRQUEUE_H
 
 #include <linux/types.h>
+#include <linux/time.h>
 
 struct sock_extended_err {
 	__u32	ee_errno;	
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 54/79] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Arnd Bergmann, linux-arch, linux-api

Fixes userspace compiler errors:

error: unknown type name ‘stack_t’
error: field ‘uc_mcontext’ has incomplete type
struct sigcontext uc_mcontext;
error: unknown type name ‘sigset_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/asm-generic/ucontext.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/asm-generic/ucontext.h b/include/uapi/asm-generic/ucontext.h
index ad77343..4481528 100644
--- a/include/uapi/asm-generic/ucontext.h
+++ b/include/uapi/asm-generic/ucontext.h
@@ -1,6 +1,9 @@
 #ifndef __ASM_GENERIC_UCONTEXT_H
 #define __ASM_GENERIC_UCONTEXT_H
 
+#include <asm/signal.h>
+#include <asm/sigcontext.h>
+
 struct ucontext {
 	unsigned long	  uc_flags;
 	struct ucontext  *uc_link;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 54/79] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compiler errors:

error: unknown type name ‘stack_t’
error: field ‘uc_mcontext’ has incomplete type
struct sigcontext uc_mcontext;
error: unknown type name ‘sigset_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/asm-generic/ucontext.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uapi/asm-generic/ucontext.h b/include/uapi/asm-generic/ucontext.h
index ad77343..4481528 100644
--- a/include/uapi/asm-generic/ucontext.h
+++ b/include/uapi/asm-generic/ucontext.h
@@ -1,6 +1,9 @@
 #ifndef __ASM_GENERIC_UCONTEXT_H
 #define __ASM_GENERIC_UCONTEXT_H
 
+#include <asm/signal.h>
+#include <asm/sigcontext.h>
+
 struct ucontext {
 	unsigned long	  uc_flags;
 	struct ucontext  *uc_link;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 55/79] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (54 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (24 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/uapi/asm/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/include/uapi/asm/signal.h b/arch/x86/include/uapi/asm/signal.h
index 8264f47..74346db 100644
--- a/arch/x86/include/uapi/asm/signal.h
+++ b/arch/x86/include/uapi/asm/signal.h
@@ -127,7 +127,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 #endif /* __ASSEMBLY__ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 56/79] include/uapi/linux/auto_fs.h: include linux/limits.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: ‘NAME_MAX’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/auto_fs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/auto_fs.h b/include/uapi/linux/auto_fs.h
index bb991df..edffdd5 100644
--- a/include/uapi/linux/auto_fs.h
+++ b/include/uapi/linux/auto_fs.h
@@ -15,6 +15,7 @@
 #define _UAPI_LINUX_AUTO_FS_H
 
 #include <linux/types.h>
+#include <linux/limits.h>
 #ifndef __KERNEL__
 #include <sys/ioctl.h>
 #endif /* __KERNEL__ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 56/79] include/uapi/linux/auto_fs.h: include linux/limits.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation error:

error: ‘NAME_MAX’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/auto_fs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/auto_fs.h b/include/uapi/linux/auto_fs.h
index bb991df..edffdd5 100644
--- a/include/uapi/linux/auto_fs.h
+++ b/include/uapi/linux/auto_fs.h
@@ -15,6 +15,7 @@
 #define _UAPI_LINUX_AUTO_FS_H
 
 #include <linux/types.h>
+#include <linux/limits.h>
 #ifndef __KERNEL__
 #include <sys/ioctl.h>
 #endif /* __KERNEL__ */
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 57/79] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Pravin Shelar, netdev, dev, linux-api

Fixes userspace compiler error:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/openvswitch.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 32e07d8..80c39a1 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -612,8 +612,8 @@ enum ovs_hash_alg {
  * @hash_basis: basis used for computing hash.
  */
 struct ovs_action_hash {
-	uint32_t  hash_alg;     /* One of ovs_hash_alg. */
-	uint32_t  hash_basis;
+	__u32  hash_alg;     /* One of ovs_hash_alg. */
+	__u32  hash_basis;
 };
 
 /**
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 57/79] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: dev-yBygre7rU0TnMu66kgdUjQ, mikko.rapeli-X3B1VOXEql0,
	linux-api-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compiler error:

error: unknown type name ‘uint32_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/openvswitch.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 32e07d8..80c39a1 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -612,8 +612,8 @@ enum ovs_hash_alg {
  * @hash_basis: basis used for computing hash.
  */
 struct ovs_action_hash {
-	uint32_t  hash_alg;     /* One of ovs_hash_alg. */
-	uint32_t  hash_basis;
+	__u32  hash_alg;     /* One of ovs_hash_alg. */
+	__u32  hash_basis;
 };
 
 /**
-- 
2.5.0

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 58/79] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 from linux/types.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (57 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (21 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Nicholas Bellinger, Andy Grover, Kyle McMartin,
	Ilias Tsitsimpis, David Disseldorp, linux-api

Fixes userspace compilation errors like:

error: unknown type name ‘uint16_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/target_core_user.h | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/include/uapi/linux/target_core_user.h b/include/uapi/linux/target_core_user.h
index 95c6521..440b52a 100644
--- a/include/uapi/linux/target_core_user.h
+++ b/include/uapi/linux/target_core_user.h
@@ -104,26 +104,26 @@ struct tcmu_cmd_entry {
 
 	union {
 		struct {
-			uint32_t iov_cnt;
-			uint32_t iov_bidi_cnt;
-			uint32_t iov_dif_cnt;
-			uint64_t cdb_off;
-			uint64_t __pad1;
-			uint64_t __pad2;
+			__u32 iov_cnt;
+			__u32 iov_bidi_cnt;
+			__u32 iov_dif_cnt;
+			__u64 cdb_off;
+			__u64 __pad1;
+			__u64 __pad2;
 			struct iovec iov[0];
 		} req;
 		struct {
-			uint8_t scsi_status;
-			uint8_t __pad1;
-			uint16_t __pad2;
-			uint32_t __pad3;
+			__u8 scsi_status;
+			__u8 __pad1;
+			__u16 __pad2;
+			__u32 __pad3;
 			char sense_buffer[TCMU_SENSE_BUFFERSIZE];
 		} rsp;
 	};
 
 } __packed;
 
-#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
+#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 
 enum tcmu_genl_cmd {
 	TCMU_CMD_UNSPEC,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 59/79] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/omapfb.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/omapfb.h b/include/uapi/linux/omapfb.h
index 7c97bc0..b637a92 100644
--- a/include/uapi/linux/omapfb.h
+++ b/include/uapi/linux/omapfb.h
@@ -181,7 +181,7 @@ struct omapfb_memory_read {
 	__u16 y;
 	__u16 w;
 	__u16 h;
-	size_t buffer_size;
+	__kernel_size_t buffer_size;
 	void __user *buffer;
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 59/79] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation error:

error: unknown type name ‘size_t’

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/omapfb.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/omapfb.h b/include/uapi/linux/omapfb.h
index 7c97bc0..b637a92 100644
--- a/include/uapi/linux/omapfb.h
+++ b/include/uapi/linux/omapfb.h
@@ -181,7 +181,7 @@ struct omapfb_memory_read {
 	__u16 y;
 	__u16 w;
 	__u16 h;
-	size_t buffer_size;
+	__kernel_size_t buffer_size;
 	void __user *buffer;
 };
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 60/79] include/uapi/linux/atm_zatm.h: include linux/time.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (59 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 61/79] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
                   ` (19 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Chas Williams, linux-atm-general, netdev, linux-api

Fixes userspace compile error:

error: field ‘real’ has incomplete type
 struct timeval real;  /* real (wall-clock) time */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/atm_zatm.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/atm_zatm.h b/include/uapi/linux/atm_zatm.h
index 10f0fa2..adbaa6c 100644
--- a/include/uapi/linux/atm_zatm.h
+++ b/include/uapi/linux/atm_zatm.h
@@ -14,6 +14,7 @@
 
 #include <linux/atmapi.h>
 #include <linux/atmioc.h>
+#include <linux/time.h>
 
 #define ZATM_GETPOOL	_IOW('a',ATMIOC_SARPRV+1,struct atmif_sioc)
 						/* get pool statistics */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 61/79] include/uapi/linux/scc.h: include linux/sockios.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (60 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 60/79] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 62/79] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
                   ` (18 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: ‘SIOCDEVPRIVATE’ undeclared here (not in a function)
  SIOCSCCRESERVED = SIOCDEVPRIVATE

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/scc.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/uapi/linux/scc.h b/include/uapi/linux/scc.h
index 72b6b81..2992b88 100644
--- a/include/uapi/linux/scc.h
+++ b/include/uapi/linux/scc.h
@@ -3,6 +3,7 @@
 #ifndef _UAPI_SCC_H
 #define _UAPI_SCC_H
 
+#include <linux/sockios.h>
 
 /* selection of hardware types */
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 62/79] include/uapi/linux/btrfs.h: define NULL
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (61 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 61/79] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (17 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Chris Mason, Takeuchi Satoru, David Sterba,
	Eryu Guan, linux-api

Copied the NULL definition from include/linux/stddef.h which does not have
it in userspace.

Fixes userspace compilation error:

error: ‘NULL’ undeclared (first use in this function)
    return NULL;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/btrfs.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index b6dec05..a8ae69b 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -20,6 +20,12 @@
 #define _UAPI_LINUX_BTRFS_H
 #include <linux/types.h>
 #include <linux/ioctl.h>
+#include <linux/stddef.h>
+
+/* for userspace where linux/stddef.h doesn't define this */
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
 
 #define BTRFS_IOCTL_MAGIC 0x94
 #define BTRFS_VOL_NAME_MAX 255
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 63/79] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Eric Biederman, kexec, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t bufsz;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/kexec.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 99048e5..26be201 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -50,9 +50,9 @@
  */
 struct kexec_segment {
 	const void *buf;
-	size_t bufsz;
+	__kernel_size_t bufsz;
 	const void *mem;
-	size_t memsz;
+	__kernel_size_t memsz;
 };
 
 #endif /* __KERNEL__ */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 63/79] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Eric Biederman,
	kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t bufsz;

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/kexec.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 99048e5..26be201 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -50,9 +50,9 @@
  */
 struct kexec_segment {
 	const void *buf;
-	size_t bufsz;
+	__kernel_size_t bufsz;
 	const void *mem;
-	size_t memsz;
+	__kernel_size_t memsz;
 };
 
 #endif /* __KERNEL__ */
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 63/79] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, kexec, Eric Biederman, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t bufsz;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/kexec.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/kexec.h b/include/uapi/linux/kexec.h
index 99048e5..26be201 100644
--- a/include/uapi/linux/kexec.h
+++ b/include/uapi/linux/kexec.h
@@ -50,9 +50,9 @@
  */
 struct kexec_segment {
 	const void *buf;
-	size_t bufsz;
+	__kernel_size_t bufsz;
 	const void *mem;
-	size_t memsz;
+	__kernel_size_t memsz;
 };
 
 #endif /* __KERNEL__ */
-- 
2.5.0


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 64/79] include/uapi/linux/reiserfs_xattr.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (63 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 65/79] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
                   ` (15 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Fixes userspace compilation error:

error: unknown type name ‘size_t’
  size_t length;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/reiserfs_xattr.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/reiserfs_xattr.h b/include/uapi/linux/reiserfs_xattr.h
index 38fdd64..af52b38 100644
--- a/include/uapi/linux/reiserfs_xattr.h
+++ b/include/uapi/linux/reiserfs_xattr.h
@@ -18,7 +18,7 @@ struct reiserfs_xattr_header {
 struct reiserfs_security_handle {
 	const char *name;
 	void *value;
-	size_t length;
+	__kernel_size_t length;
 };
 
 #endif  /*  _LINUX_REISERFS_XATTR_H  */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 65/79] include/uapi/linux/patchkey.h: change #error to #warning if file included directly
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (64 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 64/79] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (14 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Would be nice to be able to compile all userspace header files also alone.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/patchkey.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/patchkey.h b/include/uapi/linux/patchkey.h
index 1bda0e5..cee195d 100644
--- a/include/uapi/linux/patchkey.h
+++ b/include/uapi/linux/patchkey.h
@@ -11,7 +11,7 @@
  */
 
 #ifndef _LINUX_PATCHKEY_H_INDIRECT
-#error "patchkey.h included directly"
+#warning "patchkey.h included directly"
 #endif
 
 #ifndef _UAPI_LINUX_PATCHKEY_H
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 66/79] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:56   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Jan Harkes, coda, codalist, linux-api

Fixes userspace compilation errors about unknown pid_t, u_short etc types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/coda.h | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/coda.h b/include/uapi/linux/coda.h
index 695fade..591bb42 100644
--- a/include/uapi/linux/coda.h
+++ b/include/uapi/linux/coda.h
@@ -100,7 +100,14 @@ typedef unsigned long long u_quad_t;
 #if defined(__linux__)
 #include <linux/time.h>
 #define cdev_t u_quad_t
+typedef unsigned long u_long;
+typedef unsigned int u_int;
+typedef unsigned short u_short;
+typedef u_long ino_t;
+
 #ifndef __KERNEL__
+typedef u_long dev_t;
+typedef void * caddr_t;
 #if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
 #define _UQUAD_T_ 1
 typedef unsigned long long u_quad_t;
@@ -295,8 +302,8 @@ struct coda_statfs {
 struct coda_in_hdr {
     u_int32_t opcode;
     u_int32_t unique;	    /* Keep multiple outstanding msgs distinct */
-    pid_t pid;
-    pid_t pgid;
+    __kernel_pid_t pid;
+    __kernel_pid_t pgid;
     vuid_t uid;
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 66/79] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Jan Harkes, coda, codalist, linux-api

Fixes userspace compilation errors about unknown pid_t, u_short etc types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/coda.h | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/coda.h b/include/uapi/linux/coda.h
index 695fade..591bb42 100644
--- a/include/uapi/linux/coda.h
+++ b/include/uapi/linux/coda.h
@@ -100,7 +100,14 @@ typedef unsigned long long u_quad_t;
 #if defined(__linux__)
 #include <linux/time.h>
 #define cdev_t u_quad_t
+typedef unsigned long u_long;
+typedef unsigned int u_int;
+typedef unsigned short u_short;
+typedef u_long ino_t;
+
 #ifndef __KERNEL__
+typedef u_long dev_t;
+typedef void * caddr_t;
 #if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
 #define _UQUAD_T_ 1
 typedef unsigned long long u_quad_t;
@@ -295,8 +302,8 @@ struct coda_statfs {
 struct coda_in_hdr {
     u_int32_t opcode;
     u_int32_t unique;	    /* Keep multiple outstanding msgs distinct */
-    pid_t pid;
-    pid_t pgid;
+    __kernel_pid_t pid;
+    __kernel_pid_t pgid;
     vuid_t uid;
 };
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 67/79] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (66 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 68/79] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
                   ` (12 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Greg Kroah-Hartman, linux-api

Fixes userspace compilation errors:

error: unknown type name ‘pid_t’
  pid_t  sender_pid
error: unknown type name ‘uid_t’
  uid_t  sender_euid;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/android/binder.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
index 41420e3..4e4a385 100644
--- a/include/uapi/linux/android/binder.h
+++ b/include/uapi/linux/android/binder.h
@@ -142,8 +142,8 @@ struct binder_transaction_data {
 
 	/* General information about the transaction. */
 	__u32	        flags;
-	pid_t		sender_pid;
-	uid_t		sender_euid;
+	__kernel_pid_t		sender_pid;
+	__kernel_uid_t		sender_euid;
 	binder_size_t	data_size;	/* number of bytes of data */
 	binder_size_t	offsets_size;	/* number of bytes of offsets */
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 68/79] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (67 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 67/79] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 69/79] include/uapi/linux/dvb/video.h: remove stdint.h include Mikko Rapeli
                   ` (11 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86

Fixes userspace compile errors like:

error: field ‘sem_perm’ has incomplete type
  struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
error: unknown type name ‘__kernel_time_t’
  __kernel_time_t sem_otime; /* last semop time */

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/x86/include/uapi/asm/sembuf.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/include/uapi/asm/sembuf.h b/arch/x86/include/uapi/asm/sembuf.h
index cc2d6a3..f11ed52 100644
--- a/arch/x86/include/uapi/asm/sembuf.h
+++ b/arch/x86/include/uapi/asm/sembuf.h
@@ -1,6 +1,9 @@
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
 
+#include <linux/types.h>
+#include <linux/ipc.h>
+
 /*
  * The semid64_ds structure for x86 architecture.
  * Note extra padding because this structure is passed back and forth
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 69/79] include/uapi/linux/dvb/video.h: remove stdint.h include
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (68 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 68/79] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (10 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Mauro Carvalho Chehab, linux-media, linux-api

Kernel headers should use linux/types.h instead.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/dvb/video.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/uapi/linux/dvb/video.h b/include/uapi/linux/dvb/video.h
index d3d14a59..4939256 100644
--- a/include/uapi/linux/dvb/video.h
+++ b/include/uapi/linux/dvb/video.h
@@ -26,7 +26,6 @@
 
 #include <linux/types.h>
 #ifndef __KERNEL__
-#include <stdint.h>
 #include <time.h>
 #endif
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 70/79] include/uapi/mtd/mtd-user.h: remove stdint.h include
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, David Woodhouse, Brian Norris, linux-mtd, linux-api

Kernel headers should use linux/types.h instead.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/mtd/mtd-user.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/uapi/mtd/mtd-user.h b/include/uapi/mtd/mtd-user.h
index 83327c8..e71d555 100644
--- a/include/uapi/mtd/mtd-user.h
+++ b/include/uapi/mtd/mtd-user.h
@@ -20,8 +20,6 @@
 #ifndef __MTD_USER_H__
 #define __MTD_USER_H__
 
-#include <stdint.h>
-
 /* This file is blessed for inclusion by userspace */
 #include <mtd/mtd-abi.h>
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 70/79] include/uapi/mtd/mtd-user.h: remove stdint.h include
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, David Woodhouse, Brian Norris,
	linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Kernel headers should use linux/types.h instead.

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/mtd/mtd-user.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/uapi/mtd/mtd-user.h b/include/uapi/mtd/mtd-user.h
index 83327c8..e71d555 100644
--- a/include/uapi/mtd/mtd-user.h
+++ b/include/uapi/mtd/mtd-user.h
@@ -20,8 +20,6 @@
 #ifndef __MTD_USER_H__
 #define __MTD_USER_H__
 
-#include <stdint.h>
-
 /* This file is blessed for inclusion by userspace */
 #include <mtd/mtd-abi.h>
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (70 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15 15:20     ` Miklos Szeredi
  2015-10-15  5:56 ` [PATCH v4 72/79] include/linux/ipmi-fru.h: use linux/types.h instead of stdint.h Mikko Rapeli
                   ` (8 subsequent siblings)
  80 siblings, 1 reply; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Miklos Szeredi, fuse-devel, linux-api

Kernel headers should not use stdint.h.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/fuse.h | 440 +++++++++++++++++++++++-----------------------
 1 file changed, 218 insertions(+), 222 deletions(-)

diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index c9aca04..a25e329 100644
--- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h
@@ -107,11 +107,7 @@
 #ifndef _LINUX_FUSE_H
 #define _LINUX_FUSE_H
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /*
  * Version negotiation:
@@ -146,42 +142,42 @@
    userspace works under 64bit kernels */
 
 struct fuse_attr {
-	uint64_t	ino;
-	uint64_t	size;
-	uint64_t	blocks;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	nlink;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	rdev;
-	uint32_t	blksize;
-	uint32_t	padding;
+	__u64	ino;
+	__u64	size;
+	__u64	blocks;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	nlink;
+	__u32	uid;
+	__u32	gid;
+	__u32	rdev;
+	__u32	blksize;
+	__u32	padding;
 };
 
 struct fuse_kstatfs {
-	uint64_t	blocks;
-	uint64_t	bfree;
-	uint64_t	bavail;
-	uint64_t	files;
-	uint64_t	ffree;
-	uint32_t	bsize;
-	uint32_t	namelen;
-	uint32_t	frsize;
-	uint32_t	padding;
-	uint32_t	spare[6];
+	__u64	blocks;
+	__u64	bfree;
+	__u64	bavail;
+	__u64	files;
+	__u64	ffree;
+	__u32	bsize;
+	__u32	namelen;
+	__u32	frsize;
+	__u32	padding;
+	__u32	spare[6];
 };
 
 struct fuse_file_lock {
-	uint64_t	start;
-	uint64_t	end;
-	uint32_t	type;
-	uint32_t	pid; /* tgid */
+	__u64	start;
+	__u64	end;
+	__u32	type;
+	__u32	pid; /* tgid */
 };
 
 /**
@@ -379,149 +375,149 @@ enum fuse_notify_code {
 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
 
 struct fuse_entry_out {
-	uint64_t	nodeid;		/* Inode ID */
-	uint64_t	generation;	/* Inode generation: nodeid:gen must
+	__u64	nodeid;		/* Inode ID */
+	__u64	generation;	/* Inode generation: nodeid:gen must
 					   be unique for the fs's lifetime */
-	uint64_t	entry_valid;	/* Cache timeout for the name */
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	entry_valid_nsec;
-	uint32_t	attr_valid_nsec;
+	__u64	entry_valid;	/* Cache timeout for the name */
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	entry_valid_nsec;
+	__u32	attr_valid_nsec;
 	struct fuse_attr attr;
 };
 
 struct fuse_forget_in {
-	uint64_t	nlookup;
+	__u64	nlookup;
 };
 
 struct fuse_forget_one {
-	uint64_t	nodeid;
-	uint64_t	nlookup;
+	__u64	nodeid;
+	__u64	nlookup;
 };
 
 struct fuse_batch_forget_in {
-	uint32_t	count;
-	uint32_t	dummy;
+	__u32	count;
+	__u32	dummy;
 };
 
 struct fuse_getattr_in {
-	uint32_t	getattr_flags;
-	uint32_t	dummy;
-	uint64_t	fh;
+	__u32	getattr_flags;
+	__u32	dummy;
+	__u64	fh;
 };
 
 #define FUSE_COMPAT_ATTR_OUT_SIZE 96
 
 struct fuse_attr_out {
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	attr_valid_nsec;
-	uint32_t	dummy;
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	attr_valid_nsec;
+	__u32	dummy;
 	struct fuse_attr attr;
 };
 
 #define FUSE_COMPAT_MKNOD_IN_SIZE 8
 
 struct fuse_mknod_in {
-	uint32_t	mode;
-	uint32_t	rdev;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	mode;
+	__u32	rdev;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_mkdir_in {
-	uint32_t	mode;
-	uint32_t	umask;
+	__u32	mode;
+	__u32	umask;
 };
 
 struct fuse_rename_in {
-	uint64_t	newdir;
+	__u64	newdir;
 };
 
 struct fuse_rename2_in {
-	uint64_t	newdir;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	newdir;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_link_in {
-	uint64_t	oldnodeid;
+	__u64	oldnodeid;
 };
 
 struct fuse_setattr_in {
-	uint32_t	valid;
-	uint32_t	padding;
-	uint64_t	fh;
-	uint64_t	size;
-	uint64_t	lock_owner;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	unused4;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	unused5;
+	__u32	valid;
+	__u32	padding;
+	__u64	fh;
+	__u64	size;
+	__u64	lock_owner;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	unused4;
+	__u32	uid;
+	__u32	gid;
+	__u32	unused5;
 };
 
 struct fuse_open_in {
-	uint32_t	flags;
-	uint32_t	unused;
+	__u32	flags;
+	__u32	unused;
 };
 
 struct fuse_create_in {
-	uint32_t	flags;
-	uint32_t	mode;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	flags;
+	__u32	mode;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_open_out {
-	uint64_t	fh;
-	uint32_t	open_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	open_flags;
+	__u32	padding;
 };
 
 struct fuse_release_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	release_flags;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	flags;
+	__u32	release_flags;
+	__u64	lock_owner;
 };
 
 struct fuse_flush_in {
-	uint64_t	fh;
-	uint32_t	unused;
-	uint32_t	padding;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	unused;
+	__u32	padding;
+	__u64	lock_owner;
 };
 
 struct fuse_read_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	read_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	read_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_WRITE_IN_SIZE 24
 
 struct fuse_write_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	write_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	write_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_write_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_STATFS_SIZE 48
@@ -531,32 +527,32 @@ struct fuse_statfs_out {
 };
 
 struct fuse_fsync_in {
-	uint64_t	fh;
-	uint32_t	fsync_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	fsync_flags;
+	__u32	padding;
 };
 
 struct fuse_setxattr_in {
-	uint32_t	size;
-	uint32_t	flags;
+	__u32	size;
+	__u32	flags;
 };
 
 struct fuse_getxattr_in {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_getxattr_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_lk_in {
-	uint64_t	fh;
-	uint64_t	owner;
+	__u64	fh;
+	__u64	owner;
 	struct fuse_file_lock lk;
-	uint32_t	lk_flags;
-	uint32_t	padding;
+	__u32	lk_flags;
+	__u32	padding;
 };
 
 struct fuse_lk_out {
@@ -564,140 +560,140 @@ struct fuse_lk_out {
 };
 
 struct fuse_access_in {
-	uint32_t	mask;
-	uint32_t	padding;
+	__u32	mask;
+	__u32	padding;
 };
 
 struct fuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
 };
 
 #define FUSE_COMPAT_INIT_OUT_SIZE 8
 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
 
 struct fuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
-	uint16_t	max_background;
-	uint16_t	congestion_threshold;
-	uint32_t	max_write;
-	uint32_t	time_gran;
-	uint32_t	unused[9];
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
+	__u16	max_background;
+	__u16	congestion_threshold;
+	__u32	max_write;
+	__u32	time_gran;
+	__u32	unused[9];
 };
 
 #define CUSE_INIT_INFO_MAX 4096
 
 struct cuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
 };
 
 struct cuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
-	uint32_t	max_read;
-	uint32_t	max_write;
-	uint32_t	dev_major;		/* chardev major */
-	uint32_t	dev_minor;		/* chardev minor */
-	uint32_t	spare[10];
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
+	__u32	max_read;
+	__u32	max_write;
+	__u32	dev_major;		/* chardev major */
+	__u32	dev_minor;		/* chardev minor */
+	__u32	spare[10];
 };
 
 struct fuse_interrupt_in {
-	uint64_t	unique;
+	__u64	unique;
 };
 
 struct fuse_bmap_in {
-	uint64_t	block;
-	uint32_t	blocksize;
-	uint32_t	padding;
+	__u64	block;
+	__u32	blocksize;
+	__u32	padding;
 };
 
 struct fuse_bmap_out {
-	uint64_t	block;
+	__u64	block;
 };
 
 struct fuse_ioctl_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	cmd;
-	uint64_t	arg;
-	uint32_t	in_size;
-	uint32_t	out_size;
+	__u64	fh;
+	__u32	flags;
+	__u32	cmd;
+	__u64	arg;
+	__u32	in_size;
+	__u32	out_size;
 };
 
 struct fuse_ioctl_iovec {
-	uint64_t	base;
-	uint64_t	len;
+	__u64	base;
+	__u64	len;
 };
 
 struct fuse_ioctl_out {
-	int32_t		result;
-	uint32_t	flags;
-	uint32_t	in_iovs;
-	uint32_t	out_iovs;
+	__s32		result;
+	__u32	flags;
+	__u32	in_iovs;
+	__u32	out_iovs;
 };
 
 struct fuse_poll_in {
-	uint64_t	fh;
-	uint64_t	kh;
-	uint32_t	flags;
-	uint32_t	events;
+	__u64	fh;
+	__u64	kh;
+	__u32	flags;
+	__u32	events;
 };
 
 struct fuse_poll_out {
-	uint32_t	revents;
-	uint32_t	padding;
+	__u32	revents;
+	__u32	padding;
 };
 
 struct fuse_notify_poll_wakeup_out {
-	uint64_t	kh;
+	__u64	kh;
 };
 
 struct fuse_fallocate_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint64_t	length;
-	uint32_t	mode;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u64	length;
+	__u32	mode;
+	__u32	padding;
 };
 
 struct fuse_in_header {
-	uint32_t	len;
-	uint32_t	opcode;
-	uint64_t	unique;
-	uint64_t	nodeid;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	pid;
-	uint32_t	padding;
+	__u32	len;
+	__u32	opcode;
+	__u64	unique;
+	__u64	nodeid;
+	__u32	uid;
+	__u32	gid;
+	__u32	pid;
+	__u32	padding;
 };
 
 struct fuse_out_header {
-	uint32_t	len;
-	int32_t		error;
-	uint64_t	unique;
+	__u32	len;
+	__s32		error;
+	__u64	unique;
 };
 
 struct fuse_dirent {
-	uint64_t	ino;
-	uint64_t	off;
-	uint32_t	namelen;
-	uint32_t	type;
+	__u64	ino;
+	__u64	off;
+	__u32	namelen;
+	__u32	type;
 	char name[];
 };
 
 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
 #define FUSE_DIRENT_ALIGN(x) \
-	(((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+	(((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
 #define FUSE_DIRENT_SIZE(d) \
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
 
@@ -712,47 +708,47 @@ struct fuse_direntplus {
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
 
 struct fuse_notify_inval_inode_out {
-	uint64_t	ino;
-	int64_t		off;
-	int64_t		len;
+	__u64	ino;
+	__s64		off;
+	__s64		len;
 };
 
 struct fuse_notify_inval_entry_out {
-	uint64_t	parent;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_delete_out {
-	uint64_t	parent;
-	uint64_t	child;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u64	child;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_store_out {
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_notify_retrieve_out {
-	uint64_t	notify_unique;
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	notify_unique;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 /* Matches the size of fuse_write_in */
 struct fuse_notify_retrieve_in {
-	uint64_t	dummy1;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	dummy2;
-	uint64_t	dummy3;
-	uint64_t	dummy4;
+	__u64	dummy1;
+	__u64	offset;
+	__u32	size;
+	__u32	dummy2;
+	__u64	dummy3;
+	__u64	dummy4;
 };
 
 /* Device ioctls: */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 72/79] include/linux/ipmi-fru.h: use linux/types.h instead of stdint.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (71 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 73/79] include/linux/sdb.h: use linux/types.h types " Mikko Rapeli
                   ` (7 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Corey Minyard, Alessandro Rubini, openipmi-developer

Kernel headers should use linux/types.h types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/linux/ipmi-fru.h | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/include/linux/ipmi-fru.h b/include/linux/ipmi-fru.h
index 4d3a763..ceecf1f 100644
--- a/include/linux/ipmi-fru.h
+++ b/include/linux/ipmi-fru.h
@@ -9,11 +9,10 @@
  */
 #ifndef __LINUX_IPMI_FRU_H__
 #define __LINUX_IPMI_FRU_H__
-#ifdef __KERNEL__
 #  include <linux/types.h>
+#ifdef __KERNEL__
 #  include <linux/string.h>
 #else
-#  include <stdint.h>
 #  include <string.h>
 #endif
 
@@ -24,14 +23,14 @@
 
 /* chapter 8, page 5 */
 struct fru_common_header {
-	uint8_t format;			/* 0x01 */
-	uint8_t internal_use_off;	/* multiple of 8 bytes */
-	uint8_t chassis_info_off;	/* multiple of 8 bytes */
-	uint8_t board_area_off;		/* multiple of 8 bytes */
-	uint8_t product_area_off;	/* multiple of 8 bytes */
-	uint8_t multirecord_off;	/* multiple of 8 bytes */
-	uint8_t pad;			/* must be 0 */
-	uint8_t checksum;		/* sum modulo 256 must be 0 */
+	__u8 format;			/* 0x01 */
+	__u8 internal_use_off;	/* multiple of 8 bytes */
+	__u8 chassis_info_off;	/* multiple of 8 bytes */
+	__u8 board_area_off;		/* multiple of 8 bytes */
+	__u8 product_area_off;	/* multiple of 8 bytes */
+	__u8 multirecord_off;	/* multiple of 8 bytes */
+	__u8 pad;			/* must be 0 */
+	__u8 checksum;		/* sum modulo 256 must be 0 */
 };
 
 /* chapter 9, page 5 -- internal_use: not used by us */
@@ -40,16 +39,16 @@ struct fru_common_header {
 
 /* chapter 13, page 9 -- used by board_info_area below */
 struct fru_type_length {
-	uint8_t type_length;
-	uint8_t data[0];
+	__u8 type_length;
+	__u8 data[0];
 };
 
 /* chapter 11, page 7 */
 struct fru_board_info_area {
-	uint8_t format;			/* 0x01 */
-	uint8_t area_len;		/* multiple of 8 bytes */
-	uint8_t language;		/* I hope it's 0 */
-	uint8_t mfg_date[3];		/* LSB, minutes since 1996-01-01 */
+	__u8 format;			/* 0x01 */
+	__u8 area_len;		/* multiple of 8 bytes */
+	__u8 language;		/* I hope it's 0 */
+	__u8 mfg_date[3];		/* LSB, minutes since 1996-01-01 */
 	struct fru_type_length tl[0];	/* type-length stuff follows */
 
 	/*
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 73/79] include/linux/sdb.h: use linux/types.h types instead of stdint.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (72 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 72/79] include/linux/ipmi-fru.h: use linux/types.h instead of stdint.h Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 74/79] include/linux/xz.h: " Mikko Rapeli
                   ` (6 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli

Kernel headers should use linux/types.h types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/linux/sdb.h | 62 +++++++++++++++++++++++++----------------------------
 1 file changed, 29 insertions(+), 33 deletions(-)

diff --git a/include/linux/sdb.h b/include/linux/sdb.h
index fbb76a4..e9ff976 100644
--- a/include/linux/sdb.h
+++ b/include/linux/sdb.h
@@ -3,11 +3,7 @@
  */
 #ifndef __SDB_H__
 #define __SDB_H__
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /*
  * All structures are 64 bytes long and are expected
@@ -25,12 +21,12 @@
  * and not terminated with a 0 byte.
  */
 struct sdb_product {
-	uint64_t		vendor_id;	/* 0x18..0x1f */
-	uint32_t		device_id;	/* 0x20..0x23 */
-	uint32_t		version;	/* 0x24..0x27 */
-	uint32_t		date;		/* 0x28..0x2b */
-	uint8_t			name[19];	/* 0x2c..0x3e */
-	uint8_t			record_type;	/* 0x3f */
+	__u64		vendor_id;	/* 0x18..0x1f */
+	__u32		device_id;	/* 0x20..0x23 */
+	__u32		version;	/* 0x24..0x27 */
+	__u32		date;		/* 0x28..0x2b */
+	__u8			name[19];	/* 0x2c..0x3e */
+	__u8			record_type;	/* 0x3f */
 };
 
 /*
@@ -40,8 +36,8 @@ struct sdb_product {
  * (for example 0x100000 - 0x10ffff)
  */
 struct sdb_component {
-	uint64_t		addr_first;	/* 0x08..0x0f */
-	uint64_t		addr_last;	/* 0x10..0x17 */
+	__u64		addr_first;	/* 0x08..0x0f */
+	__u64		addr_last;	/* 0x10..0x17 */
 	struct sdb_product	product;	/* 0x18..0x3f */
 };
 
@@ -63,10 +59,10 @@ enum sdb_record_type {
  */
 #define				SDB_MAGIC	0x5344422d /* "SDB-" */
 struct sdb_interconnect {
-	uint32_t		sdb_magic;	/* 0x00-0x03 */
-	uint16_t		sdb_records;	/* 0x04-0x05 */
-	uint8_t			sdb_version;	/* 0x06 */
-	uint8_t			sdb_bus_type;	/* 0x07 */
+	__u32		sdb_magic;	/* 0x00-0x03 */
+	__u16		sdb_records;	/* 0x04-0x05 */
+	__u8			sdb_version;	/* 0x06 */
+	__u8			sdb_bus_type;	/* 0x07 */
 	struct sdb_component	sdb_component;	/* 0x08-0x3f */
 };
 
@@ -77,10 +73,10 @@ struct sdb_interconnect {
  * bus-specific bits are defined by each bus (see below)
  */
 struct sdb_device {
-	uint16_t		abi_class;	/* 0x00-0x01 */
-	uint8_t			abi_ver_major;	/* 0x02 */
-	uint8_t			abi_ver_minor;	/* 0x03 */
-	uint32_t		bus_specific;	/* 0x04-0x07 */
+	__u16		abi_class;	/* 0x00-0x01 */
+	__u8			abi_ver_major;	/* 0x02 */
+	__u8			abi_ver_minor;	/* 0x03 */
+	__u32		bus_specific;	/* 0x04-0x07 */
 	struct sdb_component	sdb_component;	/* 0x08-0x3f */
 };
 
@@ -89,7 +85,7 @@ struct sdb_device {
  * child is the address of the nested SDB table
  */
 struct sdb_bridge {
-	uint64_t		sdb_child;	/* 0x00-0x07 */
+	__u64		sdb_child;	/* 0x00-0x07 */
 	struct sdb_component	sdb_component;	/* 0x08-0x3f */
 };
 
@@ -100,7 +96,7 @@ struct sdb_bridge {
  * just provide product information for an aggregate device
  */
 struct sdb_integration {
-	uint8_t			reserved[24];	/* 0x00-0x17 */
+	__u8			reserved[24];	/* 0x00-0x17 */
 	struct sdb_product	product;	/* 0x08-0x3f */
 };
 
@@ -109,8 +105,8 @@ struct sdb_integration {
  * again, an informative field that software can ignore
  */
 struct sdb_repo_url {
-	uint8_t			repo_url[63];	/* 0x00-0x3e */
-	uint8_t			record_type;	/* 0x3f */
+	__u8			repo_url[63];	/* 0x00-0x3e */
+	__u8			record_type;	/* 0x3f */
 };
 
 /* Type 0x82: Synthesis tool information
@@ -118,13 +114,13 @@ struct sdb_repo_url {
  * this informative record
  */
 struct sdb_synthesis {
-	uint8_t			syn_name[16];	/* 0x00-0x0f */
-	uint8_t			commit_id[16];	/* 0x10-0x1f */
-	uint8_t			tool_name[8];	/* 0x20-0x27 */
-	uint32_t		tool_version;	/* 0x28-0x2b */
-	uint32_t		date;		/* 0x2c-0x2f */
-	uint8_t			user_name[15];	/* 0x30-0x3e */
-	uint8_t			record_type;	/* 0x3f */
+	__u8			syn_name[16];	/* 0x00-0x0f */
+	__u8			commit_id[16];	/* 0x10-0x1f */
+	__u8			tool_name[8];	/* 0x20-0x27 */
+	__u32		tool_version;	/* 0x28-0x2b */
+	__u32		date;		/* 0x2c-0x2f */
+	__u8			user_name[15];	/* 0x30-0x3e */
+	__u8			record_type;	/* 0x3f */
 };
 
 /* Type 0xff: empty
@@ -135,8 +131,8 @@ struct sdb_synthesis {
  * It can also be used to pad a table to a desired length.
  */
 struct sdb_empty {
-	uint8_t			reserved[63];	/* 0x00-0x3e */
-	uint8_t			record_type;	/* 0x3f */
+	__u8			reserved[63];	/* 0x00-0x3e */
+	__u8			record_type;	/* 0x3f */
 };
 
 /* The type of bus, for bus-specific flags */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 74/79] include/linux/xz.h: use linux/types.h types instead of stdint.h
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (73 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 73/79] include/linux/sdb.h: use linux/types.h types " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace Mikko Rapeli
                   ` (5 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli

Kernel headers should use linux/types.h types.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/linux/xz.h | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/include/linux/xz.h b/include/linux/xz.h
index 64cffa6..7686511 100644
--- a/include/linux/xz.h
+++ b/include/linux/xz.h
@@ -11,12 +11,11 @@
 #ifndef XZ_H
 #define XZ_H
 
+#	include <linux/types.h>
 #ifdef __KERNEL__
 #	include <linux/stddef.h>
-#	include <linux/types.h>
 #else
 #	include <stddef.h>
-#	include <stdint.h>
 #endif
 
 /* In Linux, this is used to make extern functions static when needed. */
@@ -134,11 +133,11 @@ enum xz_ret {
  * the variables in_pos and out_pos are modified by the XZ code.
  */
 struct xz_buf {
-	const uint8_t *in;
+	const __u8 *in;
 	size_t in_pos;
 	size_t in_size;
 
-	uint8_t *out;
+	__u8 *out;
 	size_t out_pos;
 	size_t out_size;
 };
@@ -191,7 +190,7 @@ struct xz_dec;
  * ready to be used with xz_dec_run(). If memory allocation fails,
  * xz_dec_init() returns NULL.
  */
-XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max);
+XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, __u32 dict_max);
 
 /**
  * xz_dec_run() - Run the XZ decoder
@@ -259,6 +258,6 @@ XZ_EXTERN void xz_crc32_init(void);
  * calculation, the third argument must be zero. To continue the calculation,
  * the previously returned value is passed as the third argument.
  */
-XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc);
+XZ_EXTERN __u32 xz_crc32(const __u8 *buf, size_t size, __u32 crc);
 #endif
 #endif
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:56   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: mikko.rapeli, Stefano Stabellini, Russell King,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, David Vrabel, xen-devel,
	linux-arm-kernel, linux-api

xen/interface/xen.h is not exported from kernel headers so remove the
dependency and provide needed defines for domid_t and xen_pfn_t if they
are not already defined by some other e.g. Xen specific headers.

Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
<5569F9C9.8000607@citrix.com>.

The ifdef for ARM is ugly but did not find better solutions for it.

Fixes userspace compilation error:

xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/arm/include/asm/xen/interface.h |  2 +-
 include/uapi/xen/privcmd.h           | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/xen/interface.h b/arch/arm/include/asm/xen/interface.h
index 5006600..68a9d99 100644
--- a/arch/arm/include/asm/xen/interface.h
+++ b/arch/arm/include/asm/xen/interface.h
@@ -36,7 +36,7 @@
  * fine since it simply wouldn't be able to create any sure pfns in
  * the first place.
  */
-typedef uint64_t xen_pfn_t;
+typedef __u64 xen_pfn_t;
 #define PRI_xen_pfn "llx"
 typedef uint64_t xen_ulong_t;
 #define PRI_xen_ulong "llx"
diff --git a/include/uapi/xen/privcmd.h b/include/uapi/xen/privcmd.h
index 7ddeeda..95b73a9 100644
--- a/include/uapi/xen/privcmd.h
+++ b/include/uapi/xen/privcmd.h
@@ -35,7 +35,19 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
-#include <xen/interface/xen.h>
+
+/* Might be defined by Xen specific headers, but if not */
+#ifndef domid_t
+typedef __u16 domid_t;
+#endif /* domid_t */
+
+#ifndef xen_pfn_t
+#if (defined __ARMEL__ || defined __ARMEB__)
+typedef __u64 xen_pfn_t;
+#else
+typedef unsigned long xen_pfn_t;
+#endif /* (defined __ARMEL__ || defined __ARMEB__) */
+#endif /* xen_pfn_t */
 
 struct privcmd_hypercall {
 	__u64 op;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-arm-kernel

xen/interface/xen.h is not exported from kernel headers so remove the
dependency and provide needed defines for domid_t and xen_pfn_t if they
are not already defined by some other e.g. Xen specific headers.

Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
<5569F9C9.8000607@citrix.com>.

The ifdef for ARM is ugly but did not find better solutions for it.

Fixes userspace compilation error:

xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/arm/include/asm/xen/interface.h |  2 +-
 include/uapi/xen/privcmd.h           | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/xen/interface.h b/arch/arm/include/asm/xen/interface.h
index 5006600..68a9d99 100644
--- a/arch/arm/include/asm/xen/interface.h
+++ b/arch/arm/include/asm/xen/interface.h
@@ -36,7 +36,7 @@
  * fine since it simply wouldn't be able to create any sure pfns in
  * the first place.
  */
-typedef uint64_t xen_pfn_t;
+typedef __u64 xen_pfn_t;
 #define PRI_xen_pfn "llx"
 typedef uint64_t xen_ulong_t;
 #define PRI_xen_ulong "llx"
diff --git a/include/uapi/xen/privcmd.h b/include/uapi/xen/privcmd.h
index 7ddeeda..95b73a9 100644
--- a/include/uapi/xen/privcmd.h
+++ b/include/uapi/xen/privcmd.h
@@ -35,7 +35,19 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
-#include <xen/interface/xen.h>
+
+/* Might be defined by Xen specific headers, but if not */
+#ifndef domid_t
+typedef __u16 domid_t;
+#endif /* domid_t */
+
+#ifndef xen_pfn_t
+#if (defined __ARMEL__ || defined __ARMEB__)
+typedef __u64 xen_pfn_t;
+#else
+typedef unsigned long xen_pfn_t;
+#endif /* (defined __ARMEL__ || defined __ARMEB__) */
+#endif /* xen_pfn_t */
 
 struct privcmd_hypercall {
 	__u64 op;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (74 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 74/79] include/linux/xz.h: " Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
                   ` (4 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: Russell King, mikko.rapeli, Stefano Stabellini, David Vrabel,
	linux-api, xen-devel, Boris Ostrovsky, linux-arm-kernel

xen/interface/xen.h is not exported from kernel headers so remove the
dependency and provide needed defines for domid_t and xen_pfn_t if they
are not already defined by some other e.g. Xen specific headers.

Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
<5569F9C9.8000607@citrix.com>.

The ifdef for ARM is ugly but did not find better solutions for it.

Fixes userspace compilation error:

xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/arm/include/asm/xen/interface.h |  2 +-
 include/uapi/xen/privcmd.h           | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/xen/interface.h b/arch/arm/include/asm/xen/interface.h
index 5006600..68a9d99 100644
--- a/arch/arm/include/asm/xen/interface.h
+++ b/arch/arm/include/asm/xen/interface.h
@@ -36,7 +36,7 @@
  * fine since it simply wouldn't be able to create any sure pfns in
  * the first place.
  */
-typedef uint64_t xen_pfn_t;
+typedef __u64 xen_pfn_t;
 #define PRI_xen_pfn "llx"
 typedef uint64_t xen_ulong_t;
 #define PRI_xen_ulong "llx"
diff --git a/include/uapi/xen/privcmd.h b/include/uapi/xen/privcmd.h
index 7ddeeda..95b73a9 100644
--- a/include/uapi/xen/privcmd.h
+++ b/include/uapi/xen/privcmd.h
@@ -35,7 +35,19 @@
 
 #include <linux/types.h>
 #include <linux/compiler.h>
-#include <xen/interface/xen.h>
+
+/* Might be defined by Xen specific headers, but if not */
+#ifndef domid_t
+typedef __u16 domid_t;
+#endif /* domid_t */
+
+#ifndef xen_pfn_t
+#if (defined __ARMEL__ || defined __ARMEB__)
+typedef __u64 xen_pfn_t;
+#else
+typedef unsigned long xen_pfn_t;
+#endif /* (defined __ARMEL__ || defined __ARMEB__) */
+#endif /* xen_pfn_t */
 
 struct privcmd_hypercall {
 	__u64 op;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 76/79] coda_psdev.h: move upc_req definition from uapi to kernel side headers
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Jan Harkes, coda, codalist, linux-api

Only users of upc_req in kernel side fs/coda/psdev.c and fs/coda/upcall.c
already include linux/coda_psdev.h.

Suggested by Jan Harkes <jaharkes@cs.cmu.edu> on lkml message
<20150531111913.GA23377@cs.cmu.edu>.

Fixes these include/uapi/linux/coda_psdev.h compilation errors in userspace:

./linux/coda_psdev.h:12:19: error: field ‘uc_chain’ has incomplete type
  struct list_head    uc_chain;
                   ^
./linux/coda_psdev.h:13:2: error: unknown type name ‘caddr_t’
  caddr_t             uc_data;
  ^
./linux/coda_psdev.h:14:2: error: unknown type name ‘u_short’
  u_short             uc_flags;
  ^
./linux/coda_psdev.h:15:2: error: unknown type name ‘u_short’
  u_short             uc_inSize;  /* Size is at most 5000 bytes */
  ^
./linux/coda_psdev.h:16:2: error: unknown type name ‘u_short’
  u_short             uc_outSize;
  ^
./linux/coda_psdev.h:17:2: error: unknown type name ‘u_short’
  u_short             uc_opcode;  /* copied from data to save lookup */
  ^
./linux/coda_psdev.h:19:2: error: unknown type name ‘wait_queue_head_t’
  wait_queue_head_t   uc_sleep;   /* process' wait queue */
  ^

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/linux/coda_psdev.h      | 11 +++++++++++
 include/uapi/linux/coda_psdev.h | 13 -------------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h
index 5b8721e..b3c0830 100644
--- a/include/linux/coda_psdev.h
+++ b/include/linux/coda_psdev.h
@@ -19,6 +19,17 @@ struct venus_comm {
 	struct mutex	    vc_mutex;
 };
 
+/* messages between coda filesystem in kernel and Venus */
+struct upc_req {
+        struct list_head    uc_chain;
+        caddr_t             uc_data;
+        u_short             uc_flags;
+        u_short             uc_inSize;  /* Size is at most 5000 bytes */
+        u_short             uc_outSize;
+        u_short             uc_opcode;  /* copied from data to save lookup */
+        int                 uc_unique;
+        wait_queue_head_t   uc_sleep;   /* process' wait queue */
+};
 
 static inline struct venus_comm *coda_vcp(struct super_block *sb)
 {
diff --git a/include/uapi/linux/coda_psdev.h b/include/uapi/linux/coda_psdev.h
index 79d0598..e2c44d2 100644
--- a/include/uapi/linux/coda_psdev.h
+++ b/include/uapi/linux/coda_psdev.h
@@ -6,19 +6,6 @@
 #define CODA_PSDEV_MAJOR 67
 #define MAX_CODADEVS  5	   /* how many do we allow */
 
-
-/* messages between coda filesystem in kernel and Venus */
-struct upc_req {
-	struct list_head    uc_chain;
-	caddr_t	            uc_data;
-	u_short	            uc_flags;
-	u_short             uc_inSize;  /* Size is at most 5000 bytes */
-	u_short	            uc_outSize;
-	u_short	            uc_opcode;  /* copied from data to save lookup */
-	int		    uc_unique;
-	wait_queue_head_t   uc_sleep;   /* process' wait queue */
-};
-
 #define CODA_REQ_ASYNC  0x1
 #define CODA_REQ_READ   0x2
 #define CODA_REQ_WRITE  0x4
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 76/79] coda_psdev.h: move upc_req definition from uapi to kernel side headers
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: mikko.rapeli-X3B1VOXEql0, Jan Harkes,
	coda-ETDLCGt7PQU3uPMLIKxrzw, codalist-/uMB558Y47wP4a1z8dhFYw,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Only users of upc_req in kernel side fs/coda/psdev.c and fs/coda/upcall.c
already include linux/coda_psdev.h.

Suggested by Jan Harkes <jaharkes-ETDLCGt7PQU3uPMLIKxrzw@public.gmane.org> on lkml message
<20150531111913.GA23377-ETDLCGt7PQU3uPMLIKxrzw@public.gmane.org>.

Fixes these include/uapi/linux/coda_psdev.h compilation errors in userspace:

./linux/coda_psdev.h:12:19: error: field ‘uc_chain’ has incomplete type
  struct list_head    uc_chain;
                   ^
./linux/coda_psdev.h:13:2: error: unknown type name ‘caddr_t’
  caddr_t             uc_data;
  ^
./linux/coda_psdev.h:14:2: error: unknown type name ‘u_short’
  u_short             uc_flags;
  ^
./linux/coda_psdev.h:15:2: error: unknown type name ‘u_short’
  u_short             uc_inSize;  /* Size is at most 5000 bytes */
  ^
./linux/coda_psdev.h:16:2: error: unknown type name ‘u_short’
  u_short             uc_outSize;
  ^
./linux/coda_psdev.h:17:2: error: unknown type name ‘u_short’
  u_short             uc_opcode;  /* copied from data to save lookup */
  ^
./linux/coda_psdev.h:19:2: error: unknown type name ‘wait_queue_head_t’
  wait_queue_head_t   uc_sleep;   /* process' wait queue */
  ^

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/linux/coda_psdev.h      | 11 +++++++++++
 include/uapi/linux/coda_psdev.h | 13 -------------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h
index 5b8721e..b3c0830 100644
--- a/include/linux/coda_psdev.h
+++ b/include/linux/coda_psdev.h
@@ -19,6 +19,17 @@ struct venus_comm {
 	struct mutex	    vc_mutex;
 };
 
+/* messages between coda filesystem in kernel and Venus */
+struct upc_req {
+        struct list_head    uc_chain;
+        caddr_t             uc_data;
+        u_short             uc_flags;
+        u_short             uc_inSize;  /* Size is at most 5000 bytes */
+        u_short             uc_outSize;
+        u_short             uc_opcode;  /* copied from data to save lookup */
+        int                 uc_unique;
+        wait_queue_head_t   uc_sleep;   /* process' wait queue */
+};
 
 static inline struct venus_comm *coda_vcp(struct super_block *sb)
 {
diff --git a/include/uapi/linux/coda_psdev.h b/include/uapi/linux/coda_psdev.h
index 79d0598..e2c44d2 100644
--- a/include/uapi/linux/coda_psdev.h
+++ b/include/uapi/linux/coda_psdev.h
@@ -6,19 +6,6 @@
 #define CODA_PSDEV_MAJOR 67
 #define MAX_CODADEVS  5	   /* how many do we allow */
 
-
-/* messages between coda filesystem in kernel and Venus */
-struct upc_req {
-	struct list_head    uc_chain;
-	caddr_t	            uc_data;
-	u_short	            uc_flags;
-	u_short             uc_inSize;  /* Size is at most 5000 bytes */
-	u_short	            uc_outSize;
-	u_short	            uc_opcode;  /* copied from data to save lookup */
-	int		    uc_unique;
-	wait_queue_head_t   uc_sleep;   /* process' wait queue */
-};
-
 #define CODA_REQ_ASYNC  0x1
 #define CODA_REQ_READ   0x2
 #define CODA_REQ_WRITE  0x4
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 77/79] include/uapi/linux/elfcore.h: remove non-compiling userspace parts
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (77 preceding siblings ...)
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56 ` [PATCH v4 78/79] include/uapi/linux/errqueue.h: include time.h in userspace Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

Remove typedef elf_greg_t greg_t and friends from userspace.
Remove struct elf_prstatus completely from userspace.

elfcore.h as such does not compile in userspace. All userspace users
of <linux/elfcore.h> like gcc/gdb and linux-tools contain their own modified
versions of the file. With these changes the file compiles but is generally
not usable for things like core dump parsing but luckily userspace users
already know this and have their own modified version of the needed
definitions and headers. But at least this compiles now.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/elfcore.h | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/include/uapi/linux/elfcore.h b/include/uapi/linux/elfcore.h
index 569737c..6c23066 100644
--- a/include/uapi/linux/elfcore.h
+++ b/include/uapi/linux/elfcore.h
@@ -15,15 +15,7 @@ struct elf_siginfo
 	int	si_errno;			/* errno */
 };
 
-
-#ifndef __KERNEL__
-typedef elf_greg_t greg_t;
-typedef elf_gregset_t gregset_t;
-typedef elf_fpregset_t fpregset_t;
-typedef elf_fpxregset_t fpxregset_t;
-#define NGREG ELF_NGREG
-#endif
-
+#ifdef __KERNEL__
 /*
  * Definitions to generate Intel SVR4-like core files.
  * These mostly have the same names as the SVR4 types with "elf_"
@@ -48,10 +40,10 @@ struct elf_prstatus
 	struct sigaltstack pr_altstack;	/* Alternate stack info */
 	struct sigaction pr_action;	/* Signal action for current sig */
 #endif
-	pid_t	pr_pid;
-	pid_t	pr_ppid;
-	pid_t	pr_pgrp;
-	pid_t	pr_sid;
+	__kernel_pid_t	pr_pid;
+	__kernel_pid_t	pr_ppid;
+	__kernel_pid_t	pr_pgrp;
+	__kernel_pid_t	pr_sid;
 	struct timeval pr_utime;	/* User time */
 	struct timeval pr_stime;	/* System time */
 	struct timeval pr_cutime;	/* Cumulative user time */
@@ -72,6 +64,7 @@ struct elf_prstatus
 #endif
 	int pr_fpvalid;		/* True if math co-processor being used.  */
 };
+#endif /* __KERNEL__ */
 
 #define ELF_PRARGSZ	(80)	/* Number of chars for args */
 
@@ -84,7 +77,7 @@ struct elf_prpsinfo
 	unsigned long pr_flag;	/* flags */
 	__kernel_uid_t	pr_uid;
 	__kernel_gid_t	pr_gid;
-	pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
+	__kernel_pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
 	/* Lots missing */
 	char	pr_fname[16];	/* filename of executable */
 	char	pr_psargs[ELF_PRARGSZ];	/* initial part of arg list */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 78/79] include/uapi/linux/errqueue.h: include time.h in userspace
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
                   ` (78 preceding siblings ...)
  2015-10-15  5:56 ` [PATCH v4 77/79] include/uapi/linux/elfcore.h: remove non-compiling userspace parts Mikko Rapeli
@ 2015-10-15  5:56 ` Mikko Rapeli
  2015-10-15  5:56   ` Mikko Rapeli
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, linux-api

linux/time.h conflicts with userspace header time.h. Try to be compatible
for kernel and userspace.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/errqueue.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/uapi/linux/errqueue.h b/include/uapi/linux/errqueue.h
index 6b1cdc6..b310b2c 100644
--- a/include/uapi/linux/errqueue.h
+++ b/include/uapi/linux/errqueue.h
@@ -2,7 +2,12 @@
 #define _UAPI_LINUX_ERRQUEUE_H
 
 #include <linux/types.h>
+
+#ifdef __KERNEL__
 #include <linux/time.h>
+#else
+#include <time.h>
+#endif /* __KERNEL__ */
 
 struct sock_extended_err {
 	__u32	ee_errno;	
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 79/79] arch/arm/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t
  2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
@ 2015-10-15  5:56   ` Mikko Rapeli
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
                     ` (79 subsequent siblings)
  80 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: mikko.rapeli, Russell King, linux-arm-kernel

Fixes uapi header compilation error from userspace on ARCH=arm:

asm/signal.h:112:2: error: unknown type name ‘size_t’
  size_t ss_size;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/arm/include/uapi/asm/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/include/uapi/asm/signal.h b/arch/arm/include/uapi/asm/signal.h
index 33073bd..859f2de 100644
--- a/arch/arm/include/uapi/asm/signal.h
+++ b/arch/arm/include/uapi/asm/signal.h
@@ -113,7 +113,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH v4 79/79] arch/arm/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t
@ 2015-10-15  5:56   ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  5:56 UTC (permalink / raw)
  To: linux-arm-kernel

Fixes uapi header compilation error from userspace on ARCH=arm:

asm/signal.h:112:2: error: unknown type name ?size_t?
  size_t ss_size;

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 arch/arm/include/uapi/asm/signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/include/uapi/asm/signal.h b/arch/arm/include/uapi/asm/signal.h
index 33073bd..859f2de 100644
--- a/arch/arm/include/uapi/asm/signal.h
+++ b/arch/arm/include/uapi/asm/signal.h
@@ -113,7 +113,7 @@ struct sigaction {
 typedef struct sigaltstack {
 	void __user *ss_sp;
 	int ss_flags;
-	size_t ss_size;
+	__kernel_size_t ss_size;
 } stack_t;
 
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 11/79] savage_drm.h: include <drm/drm.h>
@ 2015-10-15  6:44     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  6:44 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, dri-devel, linux-api

On Thu, Oct 15, 2015 at 07:55:49AM +0200, Mikko Rapeli wrote:
> Fixes compiler error:
> 
> drm/savage_drm.h:50:24: error: array type has incomplete element type
>   struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Queued for -next, thanks for the patch.
-Daniel

> ---
>  include/uapi/drm/savage_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/savage_drm.h b/include/uapi/drm/savage_drm.h
> index 818d49b..9dc9dc1 100644
> --- a/include/uapi/drm/savage_drm.h
> +++ b/include/uapi/drm/savage_drm.h
> @@ -26,6 +26,8 @@
>  #ifndef __SAVAGE_DRM_H__
>  #define __SAVAGE_DRM_H__
>  
> +#include <drm/drm.h>
> +
>  #ifndef __SAVAGE_SAREA_DEFINES__
>  #define __SAVAGE_SAREA_DEFINES__
>  
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 11/79] savage_drm.h: include <drm/drm.h>
@ 2015-10-15  6:44     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  6:44 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 07:55:49AM +0200, Mikko Rapeli wrote:
> Fixes compiler error:
> 
> drm/savage_drm.h:50:24: error: array type has incomplete element type
>   struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>

Queued for -next, thanks for the patch.
-Daniel

> ---
>  include/uapi/drm/savage_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/savage_drm.h b/include/uapi/drm/savage_drm.h
> index 818d49b..9dc9dc1 100644
> --- a/include/uapi/drm/savage_drm.h
> +++ b/include/uapi/drm/savage_drm.h
> @@ -26,6 +26,8 @@
>  #ifndef __SAVAGE_DRM_H__
>  #define __SAVAGE_DRM_H__
>  
> +#include <drm/drm.h>
> +
>  #ifndef __SAVAGE_SAREA_DEFINES__
>  #define __SAVAGE_SAREA_DEFINES__
>  
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers
  2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
@ 2015-10-15  7:17   ` Alexander Stein
  2015-10-15  7:29     ` Mikko Rapeli
  2015-11-10 15:03     ` Gabriel Laskar
  0 siblings, 2 replies; 206+ messages in thread
From: Alexander Stein @ 2015-10-15  7:17 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel

Hi Mikko,

On Thursday 15 October 2015 07:55:40, Mikko Rapeli wrote:
> Users of kernel header files would be happier if they did not contain
> kernel specific parts and would contain #include statements for all
> other header files that they depend on, and in general would compile.
> 
> For each header file exported to userspace, this script creates
> a simple .c file which just includes the header file. Then it
> tries to compile it together with minimal header files from GCC
> and libc, and reports results.

Just an idea: Why not try to create a pre-compiled header (pch) instead. So you can get rid of creating temporary .c files for each header.

Best regards,
Alexander


^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers
  2015-10-15  7:17   ` Alexander Stein
@ 2015-10-15  7:29     ` Mikko Rapeli
  2015-11-10 15:03     ` Gabriel Laskar
  1 sibling, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15  7:29 UTC (permalink / raw)
  To: Alexander Stein; +Cc: linux-kernel

On Thu, Oct 15, 2015 at 09:17:18AM +0200, Alexander Stein wrote:
> Hi Mikko,
> 
> On Thursday 15 October 2015 07:55:40, Mikko Rapeli wrote:
> > Users of kernel header files would be happier if they did not contain
> > kernel specific parts and would contain #include statements for all
> > other header files that they depend on, and in general would compile.
> > 
> > For each header file exported to userspace, this script creates
> > a simple .c file which just includes the header file. Then it
> > tries to compile it together with minimal header files from GCC
> > and libc, and reports results.
> 
> Just an idea: Why not try to create a pre-compiled header (pch) instead. So you can get rid of creating temporary .c files for each header.

Good idea. I'll explore this too. Currently the scripts abuse the
headers_install target directory and leave cruft like these .c files and
the hacked up libc headers around. I was planning to clean these up when
actual headers are clean of compiler errors and when integrating
this compile check to 'make headers_check'.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 08/79] r128_drm.h: include drm/drm.h
  2015-10-15  5:55 ` [PATCH v4 08/79] r128_drm.h: include drm/drm.h Mikko Rapeli
@ 2015-10-15  7:43     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  7:43 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, dri-devel, linux-api

On Thu, Oct 15, 2015 at 07:55:46AM +0200, Mikko Rapeli wrote:
> Fixes compile error:
> 
> drm/r128_drm.h:156:23: error: array type has incomplete element type
>   struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied to drm-misc, thanks.
-Daniel

> ---
>  include/uapi/drm/r128_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/r128_drm.h b/include/uapi/drm/r128_drm.h
> index 8d8878b..76b0aa3 100644
> --- a/include/uapi/drm/r128_drm.h
> +++ b/include/uapi/drm/r128_drm.h
> @@ -33,6 +33,8 @@
>  #ifndef __R128_DRM_H__
>  #define __R128_DRM_H__
>  
> +#include <drm/drm.h>
> +
>  /* WARNING: If you change any of these defines, make sure to change the
>   * defines in the X server file (r128_sarea.h)
>   */
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 08/79] r128_drm.h: include drm/drm.h
@ 2015-10-15  7:43     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  7:43 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-api, linux-kernel, dri-devel

On Thu, Oct 15, 2015 at 07:55:46AM +0200, Mikko Rapeli wrote:
> Fixes compile error:
> 
> drm/r128_drm.h:156:23: error: array type has incomplete element type
>   struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied to drm-misc, thanks.
-Daniel

> ---
>  include/uapi/drm/r128_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/r128_drm.h b/include/uapi/drm/r128_drm.h
> index 8d8878b..76b0aa3 100644
> --- a/include/uapi/drm/r128_drm.h
> +++ b/include/uapi/drm/r128_drm.h
> @@ -33,6 +33,8 @@
>  #ifndef __R128_DRM_H__
>  #define __R128_DRM_H__
>  
> +#include <drm/drm.h>
> +
>  /* WARNING: If you change any of these defines, make sure to change the
>   * defines in the X server file (r128_sarea.h)
>   */
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h
@ 2015-10-15  7:44     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  7:44 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, dri-devel, linux-api

On Thu, Oct 15, 2015 at 07:55:51AM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation error:
> 
> error: array type has incomplete element type
> struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied to drm-misc, thanks.
-Daniel

> ---
>  include/uapi/drm/i810_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/i810_drm.h b/include/uapi/drm/i810_drm.h
> index 7a10bb6..34736ef 100644
> --- a/include/uapi/drm/i810_drm.h
> +++ b/include/uapi/drm/i810_drm.h
> @@ -1,6 +1,8 @@
>  #ifndef _I810_DRM_H_
>  #define _I810_DRM_H_
>  
> +#include <drm/drm.h>
> +
>  /* WARNING: These defines must be the same as what the Xserver uses.
>   * if you change them, you must change the defines in the Xserver.
>   */
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h
@ 2015-10-15  7:44     ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-15  7:44 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 07:55:51AM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation error:
> 
> error: array type has incomplete element type
> struct drm_clip_rect boxes[I810_NR_SAREA_CLIPRECTS];
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>

Applied to drm-misc, thanks.
-Daniel

> ---
>  include/uapi/drm/i810_drm.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/drm/i810_drm.h b/include/uapi/drm/i810_drm.h
> index 7a10bb6..34736ef 100644
> --- a/include/uapi/drm/i810_drm.h
> +++ b/include/uapi/drm/i810_drm.h
> @@ -1,6 +1,8 @@
>  #ifndef _I810_DRM_H_
>  #define _I810_DRM_H_
>  
> +#include <drm/drm.h>
> +
>  /* WARNING: These defines must be the same as what the Xserver uses.
>   * if you change them, you must change the defines in the Xserver.
>   */
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 17/79] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP macro
  2015-10-15  5:55   ` Mikko Rapeli
@ 2015-10-15  8:04     ` Takashi Iwai
  -1 siblings, 0 replies; 206+ messages in thread
From: Takashi Iwai @ 2015-10-15  8:04 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, alsa-devel, Jaroslav Kysela, linux-api

On Thu, 15 Oct 2015 07:55:55 +0200,
Mikko Rapeli wrote:
> 
> Fixes userspace compilation error:
> 
> error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
>   DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> 
> DECLARE_BITMAP macro is not meant for userspace headers and thus
> added here as private copy for emu10k.h.
> 
> Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
> <2168807.4Yxh5gl11Q@wuerfel> and Takashi Iwai <tiwai@suse.de>
> in message <s5h1thx88tk.wl-tiwai@suse.de> on lkml.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied, thanks.


Takashi

> ---
>  include/uapi/sound/emu10k1.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
> index ec1535b..5175e16 100644
> --- a/include/uapi/sound/emu10k1.h
> +++ b/include/uapi/sound/emu10k1.h
> @@ -34,6 +34,14 @@
>  
>  #define EMU10K1_FX8010_PCM_COUNT		8
>  
> +/*
> + * Following definition is copied from linux/types.h to support compiling
> + * this header file in userspace since they are not generally available for
> + * uapi headers.
> + */
> +#define __EMU10K1_DECLARE_BITMAP(name,bits) \
> +	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
> +
>  /* instruction set */
>  #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
>  #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
> @@ -300,7 +308,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
>  struct snd_emu10k1_fx8010_code {
>  	char name[128];
>  
> -	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
>  	__u32 __user *gpr_map;		/* initializers */
>  
>  	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
> @@ -313,11 +321,11 @@ struct snd_emu10k1_fx8010_code {
>  	unsigned int gpr_list_control_total; /* total count of GPR controls */
>  	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
>  
> -	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
>  	__u32 __user *tram_data_map;	  /* data initializers */
>  	__u32 __user *tram_addr_map;	  /* map initializers */
>  
> -	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
> +	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
>  	__u32 __user *code;		  /* one instruction - 64 bits */
>  };
>  
> -- 
> 2.5.0
> 
> 

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 17/79] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP macro
@ 2015-10-15  8:04     ` Takashi Iwai
  0 siblings, 0 replies; 206+ messages in thread
From: Takashi Iwai @ 2015-10-15  8:04 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, alsa-devel, Jaroslav Kysela, linux-api

On Thu, 15 Oct 2015 07:55:55 +0200,
Mikko Rapeli wrote:
> 
> Fixes userspace compilation error:
> 
> error: expected specifier-qualifier-list before ‘DECLARE_BITMAP’
>   DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> 
> DECLARE_BITMAP macro is not meant for userspace headers and thus
> added here as private copy for emu10k.h.
> 
> Fix was suggested by Arnd Bergmann <arnd@arndb.de> in message
> <2168807.4Yxh5gl11Q@wuerfel> and Takashi Iwai <tiwai@suse.de>
> in message <s5h1thx88tk.wl-tiwai@suse.de> on lkml.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied, thanks.


Takashi

> ---
>  include/uapi/sound/emu10k1.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/include/uapi/sound/emu10k1.h b/include/uapi/sound/emu10k1.h
> index ec1535b..5175e16 100644
> --- a/include/uapi/sound/emu10k1.h
> +++ b/include/uapi/sound/emu10k1.h
> @@ -34,6 +34,14 @@
>  
>  #define EMU10K1_FX8010_PCM_COUNT		8
>  
> +/*
> + * Following definition is copied from linux/types.h to support compiling
> + * this header file in userspace since they are not generally available for
> + * uapi headers.
> + */
> +#define __EMU10K1_DECLARE_BITMAP(name,bits) \
> +	unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
> +
>  /* instruction set */
>  #define iMAC0	 0x00	/* R = A + (X * Y >> 31)   ; saturation */
>  #define iMAC1	 0x01	/* R = A + (-X * Y >> 31)  ; saturation */
> @@ -300,7 +308,7 @@ struct snd_emu10k1_fx8010_control_old_gpr {
>  struct snd_emu10k1_fx8010_code {
>  	char name[128];
>  
> -	DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
>  	__u32 __user *gpr_map;		/* initializers */
>  
>  	unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
> @@ -313,11 +321,11 @@ struct snd_emu10k1_fx8010_code {
>  	unsigned int gpr_list_control_total; /* total count of GPR controls */
>  	struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls; /* listed GPR controls */
>  
> -	DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
> +	__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
>  	__u32 __user *tram_data_map;	  /* data initializers */
>  	__u32 __user *tram_addr_map;	  /* map initializers */
>  
> -	DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
> +	__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
>  	__u32 __user *code;		  /* one instruction - 64 bits */
>  };
>  
> -- 
> 2.5.0
> 
> 

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 28/79] hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of stdint.h
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15  8:04     ` Takashi Iwai
  -1 siblings, 0 replies; 206+ messages in thread
From: Takashi Iwai @ 2015-10-15  8:04 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, alsa-devel, Jaroslav Kysela, linux-api

On Thu, 15 Oct 2015 07:56:06 +0200,
Mikko Rapeli wrote:
> 
> Kernel headers should use linux/types.h based definitions.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied, thanks.


Takashi

> ---
>  include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
>  1 file changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
> index 5737332..c4db6f5 100644
> --- a/include/uapi/sound/hdspm.h
> +++ b/include/uapi/sound/hdspm.h
> @@ -20,11 +20,7 @@
>   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>   */
>  
> -#ifdef __KERNEL__
>  #include <linux/types.h>
> -#else
> -#include <stdint.h>
> -#endif
>  
>  /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
>  #define HDSPM_MAX_CHANNELS      64
> @@ -46,15 +42,15 @@ enum hdspm_speed {
>  /* -------------------- IOCTL Peak/RMS Meters -------------------- */
>  
>  struct hdspm_peak_rms {
> -	uint32_t input_peaks[64];
> -	uint32_t playback_peaks[64];
> -	uint32_t output_peaks[64];
> +	__u32 input_peaks[64];
> +	__u32 playback_peaks[64];
> +	__u32 output_peaks[64];
>  
> -	uint64_t input_rms[64];
> -	uint64_t playback_rms[64];
> -	uint64_t output_rms[64];
> +	__u64 input_rms[64];
> +	__u64 playback_rms[64];
> +	__u64 output_rms[64];
>  
> -	uint8_t speed; /* enum {ss, ds, qs} */
> +	__u8 speed; /* enum {ss, ds, qs} */
>  	int status2;
>  };
>  
> @@ -155,21 +151,21 @@ enum hdspm_syncsource {
>  };
>  
>  struct hdspm_status {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	enum hdspm_syncsource autosync_source;
>  
> -	uint64_t card_clock;
> -	uint32_t master_period;
> +	__u64 card_clock;
> +	__u32 master_period;
>  
>  	union {
>  		struct {
> -			uint8_t sync_wc; /* enum hdspm_sync */
> -			uint8_t sync_madi; /* enum hdspm_sync */
> -			uint8_t sync_tco; /* enum hdspm_sync */
> -			uint8_t sync_in; /* enum hdspm_sync */
> -			uint8_t madi_input; /* enum hdspm_madi_input */
> -			uint8_t channel_format; /* enum hdspm_madi_channel_format */
> -			uint8_t frame_format; /* enum hdspm_madi_frame_format */
> +			__u8 sync_wc; /* enum hdspm_sync */
> +			__u8 sync_madi; /* enum hdspm_sync */
> +			__u8 sync_tco; /* enum hdspm_sync */
> +			__u8 sync_in; /* enum hdspm_sync */
> +			__u8 madi_input; /* enum hdspm_madi_input */
> +			__u8 channel_format; /* enum hdspm_madi_channel_format */
> +			__u8 frame_format; /* enum hdspm_madi_frame_format */
>  		} madi;
>  	} card_specific;
>  };
> @@ -184,7 +180,7 @@ struct hdspm_status {
>  #define HDSPM_ADDON_TCO 1
>  
>  struct hdspm_version {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	char cardname[20];
>  	unsigned int serial;
>  	unsigned short firmware_rev;
> -- 
> 2.5.0
> 
> 

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 28/79] hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of stdint.h
@ 2015-10-15  8:04     ` Takashi Iwai
  0 siblings, 0 replies; 206+ messages in thread
From: Takashi Iwai @ 2015-10-15  8:04 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, alsa-devel, Jaroslav Kysela, linux-api

On Thu, 15 Oct 2015 07:56:06 +0200,
Mikko Rapeli wrote:
> 
> Kernel headers should use linux/types.h based definitions.
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Applied, thanks.


Takashi

> ---
>  include/uapi/sound/hdspm.h | 40 ++++++++++++++++++----------------------
>  1 file changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/include/uapi/sound/hdspm.h b/include/uapi/sound/hdspm.h
> index 5737332..c4db6f5 100644
> --- a/include/uapi/sound/hdspm.h
> +++ b/include/uapi/sound/hdspm.h
> @@ -20,11 +20,7 @@
>   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>   */
>  
> -#ifdef __KERNEL__
>  #include <linux/types.h>
> -#else
> -#include <stdint.h>
> -#endif
>  
>  /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
>  #define HDSPM_MAX_CHANNELS      64
> @@ -46,15 +42,15 @@ enum hdspm_speed {
>  /* -------------------- IOCTL Peak/RMS Meters -------------------- */
>  
>  struct hdspm_peak_rms {
> -	uint32_t input_peaks[64];
> -	uint32_t playback_peaks[64];
> -	uint32_t output_peaks[64];
> +	__u32 input_peaks[64];
> +	__u32 playback_peaks[64];
> +	__u32 output_peaks[64];
>  
> -	uint64_t input_rms[64];
> -	uint64_t playback_rms[64];
> -	uint64_t output_rms[64];
> +	__u64 input_rms[64];
> +	__u64 playback_rms[64];
> +	__u64 output_rms[64];
>  
> -	uint8_t speed; /* enum {ss, ds, qs} */
> +	__u8 speed; /* enum {ss, ds, qs} */
>  	int status2;
>  };
>  
> @@ -155,21 +151,21 @@ enum hdspm_syncsource {
>  };
>  
>  struct hdspm_status {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	enum hdspm_syncsource autosync_source;
>  
> -	uint64_t card_clock;
> -	uint32_t master_period;
> +	__u64 card_clock;
> +	__u32 master_period;
>  
>  	union {
>  		struct {
> -			uint8_t sync_wc; /* enum hdspm_sync */
> -			uint8_t sync_madi; /* enum hdspm_sync */
> -			uint8_t sync_tco; /* enum hdspm_sync */
> -			uint8_t sync_in; /* enum hdspm_sync */
> -			uint8_t madi_input; /* enum hdspm_madi_input */
> -			uint8_t channel_format; /* enum hdspm_madi_channel_format */
> -			uint8_t frame_format; /* enum hdspm_madi_frame_format */
> +			__u8 sync_wc; /* enum hdspm_sync */
> +			__u8 sync_madi; /* enum hdspm_sync */
> +			__u8 sync_tco; /* enum hdspm_sync */
> +			__u8 sync_in; /* enum hdspm_sync */
> +			__u8 madi_input; /* enum hdspm_madi_input */
> +			__u8 channel_format; /* enum hdspm_madi_channel_format */
> +			__u8 frame_format; /* enum hdspm_madi_frame_format */
>  		} madi;
>  	} card_specific;
>  };
> @@ -184,7 +180,7 @@ struct hdspm_status {
>  #define HDSPM_ADDON_TCO 1
>  
>  struct hdspm_version {
> -	uint8_t card_type; /* enum hdspm_io_type */
> +	__u8 card_type; /* enum hdspm_io_type */
>  	char cardname[20];
>  	unsigned int serial;
>  	unsigned short firmware_rev;
> -- 
> 2.5.0
> 
> 

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
@ 2015-10-15  8:09     ` Mike Snitzer
  0 siblings, 0 replies; 206+ messages in thread
From: Mike Snitzer @ 2015-10-15  8:09 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, dm-devel, Alasdair Kergon, linux-api

On Thu, Oct 15 2015 at  1:55am -0400,
Mikko Rapeli <mikko.rapeli@iki.fi> wrote:

> Fixes userspace compilation errors like:
> 
> linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

As was already explained before, there is no need to compile this for
userspace consumption.  Where is this requirement coming from?

If your 0th patch's header speaks to _why_ you keep requesting this
change then please cc me on it.

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
@ 2015-10-15  8:09     ` Mike Snitzer
  0 siblings, 0 replies; 206+ messages in thread
From: Mike Snitzer @ 2015-10-15  8:09 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Alasdair Kergon,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15 2015 at  1:55am -0400,
Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:

> Fixes userspace compilation errors like:
> 
> linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>

As was already explained before, there is no need to compile this for
userspace consumption.  Where is this requirement coming from?

If your 0th patch's header speaks to _why_ you keep requesting this
change then please cc me on it.

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15  8:49     ` Frans Klaver
  0 siblings, 0 replies; 206+ messages in thread
From: Frans Klaver @ 2015-10-15  8:49 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, linux-api

Hi,

On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> And include linux/hdlc/ioctl.h from linux/if.h.

That appears to have already been the case before this patch. You just
add a comment behind the include statement.


> diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
> index 9cf2394..0f98f0a 100644
> --- a/include/uapi/linux/if.h
> +++ b/include/uapi/linux/if.h
> @@ -22,10 +22,8 @@
>  #include <linux/types.h>               /* for "__kernel_caddr_t" et al */
>  #include <linux/socket.h>              /* for "struct sockaddr" et al  */
>  #include <linux/compiler.h>            /* for "__user" et al           */
> -
> -#define        IFNAMSIZ        16
> -#define        IFALIASZ        256
> -#include <linux/hdlc/ioctl.h>
> +#include <linux/hdlc/ioctl.h>           /* for IFNAMSIZ                 */
> +#define        IFALIASZ        256

Thanks,
Frans

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15  8:49     ` Frans Klaver
  0 siblings, 0 replies; 206+ messages in thread
From: Frans Klaver @ 2015-10-15  8:49 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-api

Hi,

On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> And include linux/hdlc/ioctl.h from linux/if.h.

That appears to have already been the case before this patch. You just
add a comment behind the include statement.


> diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
> index 9cf2394..0f98f0a 100644
> --- a/include/uapi/linux/if.h
> +++ b/include/uapi/linux/if.h
> @@ -22,10 +22,8 @@
>  #include <linux/types.h>               /* for "__kernel_caddr_t" et al */
>  #include <linux/socket.h>              /* for "struct sockaddr" et al  */
>  #include <linux/compiler.h>            /* for "__user" et al           */
> -
> -#define        IFNAMSIZ        16
> -#define        IFALIASZ        256
> -#include <linux/hdlc/ioctl.h>
> +#include <linux/hdlc/ioctl.h>           /* for IFNAMSIZ                 */
> +#define        IFALIASZ        256

Thanks,
Frans

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:07     ` kbuild test robot
  0 siblings, 0 replies; 206+ messages in thread
From: kbuild test robot @ 2015-10-15 10:07 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: kbuild-all, linux-kernel, mikko.rapeli, Stefano Stabellini,
	Russell King, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	David Vrabel, xen-devel, linux-arm-kernel, linux-api

[-- Attachment #1: Type: text/plain, Size: 1983 bytes --]

Hi Mikko,

[auto build test ERROR on drm/drm-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Mikko-Rapeli/Userspace-compile-test-and-fixes-for-exported-uapi-header-files/20151015-150653
config: arm64-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   In file included from drivers/xen/privcmd.c:33:0:
>> include/uapi/xen/privcmd.h:48:23: error: conflicting types for 'xen_pfn_t'
    typedef unsigned long xen_pfn_t;
                          ^
   In file included from arch/arm64/include/asm/xen/interface.h:1:0,
                    from include/xen/interface/xen.h:30,
                    from include/xen/xen.h:23,
                    from arch/arm64/include/asm/io.h:35,
                    from include/linux/bio.h:30,
                    from include/linux/writeback.h:192,
                    from include/linux/memcontrol.h:30,
                    from include/linux/swap.h:8,
                    from drivers/xen/privcmd.c:20:
   arch/arm64/include/../../arm/include/asm/xen/interface.h:39:15: note: previous declaration of 'xen_pfn_t' was here
    typedef __u64 xen_pfn_t;
                  ^

vim +/xen_pfn_t +48 include/uapi/xen/privcmd.h

    42	#endif /* domid_t */
    43	
    44	#ifndef xen_pfn_t
    45	#if (defined __ARMEL__ || defined __ARMEB__)
    46	typedef __u64 xen_pfn_t;
    47	#else
  > 48	typedef unsigned long xen_pfn_t;
    49	#endif /* (defined __ARMEL__ || defined __ARMEB__) */
    50	#endif /* xen_pfn_t */
    51	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 45525 bytes --]

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:07     ` kbuild test robot
  0 siblings, 0 replies; 206+ messages in thread
From: kbuild test robot @ 2015-10-15 10:07 UTC (permalink / raw)
  Cc: kbuild-all-JC7UmRfGjtg, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	mikko.rapeli-X3B1VOXEql0, Stefano Stabellini, Russell King,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, David Vrabel,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 1983 bytes --]

Hi Mikko,

[auto build test ERROR on drm/drm-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Mikko-Rapeli/Userspace-compile-test-and-fixes-for-exported-uapi-header-files/20151015-150653
config: arm64-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   In file included from drivers/xen/privcmd.c:33:0:
>> include/uapi/xen/privcmd.h:48:23: error: conflicting types for 'xen_pfn_t'
    typedef unsigned long xen_pfn_t;
                          ^
   In file included from arch/arm64/include/asm/xen/interface.h:1:0,
                    from include/xen/interface/xen.h:30,
                    from include/xen/xen.h:23,
                    from arch/arm64/include/asm/io.h:35,
                    from include/linux/bio.h:30,
                    from include/linux/writeback.h:192,
                    from include/linux/memcontrol.h:30,
                    from include/linux/swap.h:8,
                    from drivers/xen/privcmd.c:20:
   arch/arm64/include/../../arm/include/asm/xen/interface.h:39:15: note: previous declaration of 'xen_pfn_t' was here
    typedef __u64 xen_pfn_t;
                  ^

vim +/xen_pfn_t +48 include/uapi/xen/privcmd.h

    42	#endif /* domid_t */
    43	
    44	#ifndef xen_pfn_t
    45	#if (defined __ARMEL__ || defined __ARMEB__)
    46	typedef __u64 xen_pfn_t;
    47	#else
  > 48	typedef unsigned long xen_pfn_t;
    49	#endif /* (defined __ARMEL__ || defined __ARMEB__) */
    50	#endif /* xen_pfn_t */
    51	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 45525 bytes --]

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:07     ` kbuild test robot
  0 siblings, 0 replies; 206+ messages in thread
From: kbuild test robot @ 2015-10-15 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Mikko,

[auto build test ERROR on drm/drm-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Mikko-Rapeli/Userspace-compile-test-and-fixes-for-exported-uapi-header-files/20151015-150653
config: arm64-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   In file included from drivers/xen/privcmd.c:33:0:
>> include/uapi/xen/privcmd.h:48:23: error: conflicting types for 'xen_pfn_t'
    typedef unsigned long xen_pfn_t;
                          ^
   In file included from arch/arm64/include/asm/xen/interface.h:1:0,
                    from include/xen/interface/xen.h:30,
                    from include/xen/xen.h:23,
                    from arch/arm64/include/asm/io.h:35,
                    from include/linux/bio.h:30,
                    from include/linux/writeback.h:192,
                    from include/linux/memcontrol.h:30,
                    from include/linux/swap.h:8,
                    from drivers/xen/privcmd.c:20:
   arch/arm64/include/../../arm/include/asm/xen/interface.h:39:15: note: previous declaration of 'xen_pfn_t' was here
    typedef __u64 xen_pfn_t;
                  ^

vim +/xen_pfn_t +48 include/uapi/xen/privcmd.h

    42	#endif /* domid_t */
    43	
    44	#ifndef xen_pfn_t
    45	#if (defined __ARMEL__ || defined __ARMEB__)
    46	typedef __u64 xen_pfn_t;
    47	#else
  > 48	typedef unsigned long xen_pfn_t;
    49	#endif /* (defined __ARMEL__ || defined __ARMEB__) */
    50	#endif /* xen_pfn_t */
    51	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 45525 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151015/a5d22f23/attachment-0001.obj>

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15  5:56   ` Mikko Rapeli
  (?)
@ 2015-10-15 10:07   ` kbuild test robot
  -1 siblings, 0 replies; 206+ messages in thread
From: kbuild test robot @ 2015-10-15 10:07 UTC (permalink / raw)
  Cc: Russell King, Stefano Stabellini, mikko.rapeli, linux-kernel,
	kbuild-all, linux-api, xen-devel, Boris Ostrovsky,
	linux-arm-kernel, David Vrabel

[-- Attachment #1: Type: text/plain, Size: 1983 bytes --]

Hi Mikko,

[auto build test ERROR on drm/drm-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Mikko-Rapeli/Userspace-compile-test-and-fixes-for-exported-uapi-header-files/20151015-150653
config: arm64-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   In file included from drivers/xen/privcmd.c:33:0:
>> include/uapi/xen/privcmd.h:48:23: error: conflicting types for 'xen_pfn_t'
    typedef unsigned long xen_pfn_t;
                          ^
   In file included from arch/arm64/include/asm/xen/interface.h:1:0,
                    from include/xen/interface/xen.h:30,
                    from include/xen/xen.h:23,
                    from arch/arm64/include/asm/io.h:35,
                    from include/linux/bio.h:30,
                    from include/linux/writeback.h:192,
                    from include/linux/memcontrol.h:30,
                    from include/linux/swap.h:8,
                    from drivers/xen/privcmd.c:20:
   arch/arm64/include/../../arm/include/asm/xen/interface.h:39:15: note: previous declaration of 'xen_pfn_t' was here
    typedef __u64 xen_pfn_t;
                  ^

vim +/xen_pfn_t +48 include/uapi/xen/privcmd.h

    42	#endif /* domid_t */
    43	
    44	#ifndef xen_pfn_t
    45	#if (defined __ARMEL__ || defined __ARMEB__)
    46	typedef __u64 xen_pfn_t;
    47	#else
  > 48	typedef unsigned long xen_pfn_t;
    49	#endif /* (defined __ARMEL__ || defined __ARMEB__) */
    50	#endif /* xen_pfn_t */
    51	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 45525 bytes --]

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:29     ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:29 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: Stefano Stabellini, Russell King, Konrad Rzeszutek Wilk,
	Boris Ostrovsky, xen-devel, linux-arm-kernel, linux-api

On 15/10/15 06:56, Mikko Rapeli wrote:
> xen/interface/xen.h is not exported from kernel headers so remove the
> dependency and provide needed defines for domid_t and xen_pfn_t if they
> are not already defined by some other e.g. Xen specific headers.
> 
> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> <5569F9C9.8000607@citrix.com>.
> 
> The ifdef for ARM is ugly but did not find better solutions for it.
> 
> Fixes userspace compilation error:
> 
> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
[...]
> --- a/include/uapi/xen/privcmd.h
> +++ b/include/uapi/xen/privcmd.h
> @@ -35,7 +35,19 @@
>  
>  #include <linux/types.h>
>  #include <linux/compiler.h>
> -#include <xen/interface/xen.h>
> +
> +/* Might be defined by Xen specific headers, but if not */
> +#ifndef domid_t
> +typedef __u16 domid_t;
> +#endif /* domid_t */

As the kbuild bot points out, this does not work since the existence of
a typedef cannot be checked with #ifdef.

I'm not really sure what problem you're trying to solve.  A user space
program making use of this interface gets the domid_t and xen_pfn_t etc
typedefs from the headers provided as part of the libxenctrl library.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:29     ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:29 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Stefano Stabellini, Russell King, Konrad Rzeszutek Wilk,
	Boris Ostrovsky, xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On 15/10/15 06:56, Mikko Rapeli wrote:
> xen/interface/xen.h is not exported from kernel headers so remove the
> dependency and provide needed defines for domid_t and xen_pfn_t if they
> are not already defined by some other e.g. Xen specific headers.
> 
> Suggested by Andrew Cooper <andrew.cooper3-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org> on lkml message
> <5569F9C9.8000607-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>.
> 
> The ifdef for ARM is ugly but did not find better solutions for it.
> 
> Fixes userspace compilation error:
> 
> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
[...]
> --- a/include/uapi/xen/privcmd.h
> +++ b/include/uapi/xen/privcmd.h
> @@ -35,7 +35,19 @@
>  
>  #include <linux/types.h>
>  #include <linux/compiler.h>
> -#include <xen/interface/xen.h>
> +
> +/* Might be defined by Xen specific headers, but if not */
> +#ifndef domid_t
> +typedef __u16 domid_t;
> +#endif /* domid_t */

As the kbuild bot points out, this does not work since the existence of
a typedef cannot be checked with #ifdef.

I'm not really sure what problem you're trying to solve.  A user space
program making use of this interface gets the domid_t and xen_pfn_t etc
typedefs from the headers provided as part of the libxenctrl library.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 10:29     ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:29 UTC (permalink / raw)
  To: linux-arm-kernel

On 15/10/15 06:56, Mikko Rapeli wrote:
> xen/interface/xen.h is not exported from kernel headers so remove the
> dependency and provide needed defines for domid_t and xen_pfn_t if they
> are not already defined by some other e.g. Xen specific headers.
> 
> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> <5569F9C9.8000607@citrix.com>.
> 
> The ifdef for ARM is ugly but did not find better solutions for it.
> 
> Fixes userspace compilation error:
> 
> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
[...]
> --- a/include/uapi/xen/privcmd.h
> +++ b/include/uapi/xen/privcmd.h
> @@ -35,7 +35,19 @@
>  
>  #include <linux/types.h>
>  #include <linux/compiler.h>
> -#include <xen/interface/xen.h>
> +
> +/* Might be defined by Xen specific headers, but if not */
> +#ifndef domid_t
> +typedef __u16 domid_t;
> +#endif /* domid_t */

As the kbuild bot points out, this does not work since the existence of
a typedef cannot be checked with #ifdef.

I'm not really sure what problem you're trying to solve.  A user space
program making use of this interface gets the domid_t and xen_pfn_t etc
typedefs from the headers provided as part of the libxenctrl library.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15  5:56   ` Mikko Rapeli
                     ` (3 preceding siblings ...)
  (?)
@ 2015-10-15 10:29   ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:29 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: Russell King, linux-api, Stefano Stabellini, xen-devel,
	Boris Ostrovsky, linux-arm-kernel

On 15/10/15 06:56, Mikko Rapeli wrote:
> xen/interface/xen.h is not exported from kernel headers so remove the
> dependency and provide needed defines for domid_t and xen_pfn_t if they
> are not already defined by some other e.g. Xen specific headers.
> 
> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> <5569F9C9.8000607@citrix.com>.
> 
> The ifdef for ARM is ugly but did not find better solutions for it.
> 
> Fixes userspace compilation error:
> 
> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
[...]
> --- a/include/uapi/xen/privcmd.h
> +++ b/include/uapi/xen/privcmd.h
> @@ -35,7 +35,19 @@
>  
>  #include <linux/types.h>
>  #include <linux/compiler.h>
> -#include <xen/interface/xen.h>
> +
> +/* Might be defined by Xen specific headers, but if not */
> +#ifndef domid_t
> +typedef __u16 domid_t;
> +#endif /* domid_t */

As the kbuild bot points out, this does not work since the existence of
a typedef cannot be checked with #ifdef.

I'm not really sure what problem you're trying to solve.  A user space
program making use of this interface gets the domid_t and xen_pfn_t etc
typedefs from the headers provided as part of the libxenctrl library.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [Xen-devel] [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15 10:55     ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:55 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: David Vrabel, linux-api, xen-devel, Boris Ostrovsky

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Applied to for-linus-4.4, thanks.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [Xen-devel] [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
@ 2015-10-15 10:55     ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:55 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: David Vrabel, linux-api, xen-devel, Boris Ostrovsky

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Applied to for-linus-4.4, thanks.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h
  2015-10-15  5:56   ` Mikko Rapeli
  (?)
@ 2015-10-15 10:55   ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:55 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: linux-api, Boris Ostrovsky, David Vrabel, xen-devel

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntalloc.h:22:2: error: unknown type name ‘uint16_t’

Applied to for-linus-4.4, thanks.

David

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [Xen-devel] [PATCH v4 30/79] gntdev.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:56   ` Mikko Rapeli
@ 2015-10-15 10:56     ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:56 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: David Vrabel, linux-api, xen-devel, Boris Ostrovsky

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Applied to for-linus-4.4, thanks.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [Xen-devel] [PATCH v4 30/79] gntdev.h: use __u32 and __u64 from linux/types.h
@ 2015-10-15 10:56     ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:56 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: David Vrabel, linux-api, xen-devel, Boris Ostrovsky

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Applied to for-linus-4.4, thanks.

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 30/79] gntdev.h: use __u32 and __u64 from linux/types.h
  2015-10-15  5:56   ` Mikko Rapeli
  (?)
@ 2015-10-15 10:56   ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 10:56 UTC (permalink / raw)
  To: Mikko Rapeli, linux-kernel
  Cc: linux-api, Boris Ostrovsky, David Vrabel, xen-devel

On 15/10/15 06:56, Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> xen/gntdev.h:38:2: error: unknown type name ‘uint32_t’

Applied to for-linus-4.4, thanks.

David

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 11:06     ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 11:06 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, David S. Miller, linux-api

On (10/15/15 07:56), Mikko Rapeli wrote:
> Date: Thu, 15 Oct 2015 07:56:01 +0200
> From: Mikko Rapeli <mikko.rapeli@iki.fi>
> To: linux-kernel@vger.kernel.org
> Cc: mikko.rapeli@iki.fi, "David S. Miller" <davem@davemloft.net>, Sowmini
>  Varadhan <sowmini.varadhan@oracle.com>, linux-api@vger.kernel.org
> Subject: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64
>  from linux/types.h
> X-Mailer: git-send-email 2.6.1
> 
> Fixes userspace compilation errors like:
> 
> linux/rds.h:96:2: error: unknown type name ‘uint8_t’

Can't you just include <stdint.h> in linux/rds.h? (similar to the
fix for linux/rds)? It would reduce the deltas significantly, 
and portable applications are likely to expect uint8_t etc anyway.

--Sowmini

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 11:06     ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 11:06 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, David S. Miller,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On (10/15/15 07:56), Mikko Rapeli wrote:
> Date: Thu, 15 Oct 2015 07:56:01 +0200
> From: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: mikko.rapeli-X3B1VOXEql0@public.gmane.org, "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>, Sowmini
>  Varadhan <sowmini.varadhan-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Subject: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64
>  from linux/types.h
> X-Mailer: git-send-email 2.6.1
> 
> Fixes userspace compilation errors like:
> 
> linux/rds.h:96:2: error: unknown type name ‘uint8_t’

Can't you just include <stdint.h> in linux/rds.h? (similar to the
fix for linux/rds)? It would reduce the deltas significantly, 
and portable applications are likely to expect uint8_t etc anyway.

--Sowmini

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
@ 2015-10-15 11:10     ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 11:10 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, David S. Miller, linux-api

On (10/15/15 07:56), Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> error: unknown type name ‘__be32’
> error: field ‘dest_addr’ has incomplete type
>    struct sockaddr_storage dest_addr;

Acked-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>


^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h
@ 2015-10-15 11:10     ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 11:10 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, David S. Miller,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On (10/15/15 07:56), Mikko Rapeli wrote:
> Fixes userspace compilation errors like:
> 
> error: unknown type name ‘__be32’
> error: field ‘dest_addr’ has incomplete type
>    struct sockaddr_storage dest_addr;

Acked-by: Sowmini Varadhan <sowmini.varadhan-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15 10:29     ` David Vrabel
@ 2015-10-15 11:18       ` Mikko Rapeli
  -1 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:18 UTC (permalink / raw)
  To: David Vrabel
  Cc: linux-kernel, Stefano Stabellini, Russell King,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, xen-devel,
	linux-arm-kernel, linux-api

On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> On 15/10/15 06:56, Mikko Rapeli wrote:
> > xen/interface/xen.h is not exported from kernel headers so remove the
> > dependency and provide needed defines for domid_t and xen_pfn_t if they
> > are not already defined by some other e.g. Xen specific headers.
> > 
> > Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> > <5569F9C9.8000607@citrix.com>.
> >
> > The ifdef for ARM is ugly but did not find better solutions for it.
> > 
> > Fixes userspace compilation error:
> > 
> > xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> [...]
> > --- a/include/uapi/xen/privcmd.h
> > +++ b/include/uapi/xen/privcmd.h
> > @@ -35,7 +35,19 @@
> >  
> >  #include <linux/types.h>
> >  #include <linux/compiler.h>
> > -#include <xen/interface/xen.h>
> > +
> > +/* Might be defined by Xen specific headers, but if not */
> > +#ifndef domid_t
> > +typedef __u16 domid_t;
> > +#endif /* domid_t */
> 
> As the kbuild bot points out, this does not work since the existence of
> a typedef cannot be checked with #ifdef.

Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
http://www.spinics.net/lists/linux-api/msg11048.html

> I'm not really sure what problem you're trying to solve.  A user space
> program making use of this interface gets the domid_t and xen_pfn_t etc
> typedefs from the headers provided as part of the libxenctrl library.

I'm trying to make sure that kernel headers in userspace compile with minimal
dependencies which are gcc and libc.

For me it is clear by now that many Linux API's and ABI's like Xen parts do
not live in the uapi header files and instead there's a separate userspace
library with needed headers and defines which have embedded copies of
the needed API and ABI definitions, like header files.

So how could this file be changed so that it compiles in userspace without
definitions from libxenctrl?

I guess I could copy the needed definitions for domid_t and xen_pfn_t from
xen/interface/xen.h of libxenctrl. That I should have done to begin with
instead of trying to hack something on my own.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:18       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:18 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> On 15/10/15 06:56, Mikko Rapeli wrote:
> > xen/interface/xen.h is not exported from kernel headers so remove the
> > dependency and provide needed defines for domid_t and xen_pfn_t if they
> > are not already defined by some other e.g. Xen specific headers.
> > 
> > Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> > <5569F9C9.8000607@citrix.com>.
> >
> > The ifdef for ARM is ugly but did not find better solutions for it.
> > 
> > Fixes userspace compilation error:
> > 
> > xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> [...]
> > --- a/include/uapi/xen/privcmd.h
> > +++ b/include/uapi/xen/privcmd.h
> > @@ -35,7 +35,19 @@
> >  
> >  #include <linux/types.h>
> >  #include <linux/compiler.h>
> > -#include <xen/interface/xen.h>
> > +
> > +/* Might be defined by Xen specific headers, but if not */
> > +#ifndef domid_t
> > +typedef __u16 domid_t;
> > +#endif /* domid_t */
> 
> As the kbuild bot points out, this does not work since the existence of
> a typedef cannot be checked with #ifdef.

Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
http://www.spinics.net/lists/linux-api/msg11048.html

> I'm not really sure what problem you're trying to solve.  A user space
> program making use of this interface gets the domid_t and xen_pfn_t etc
> typedefs from the headers provided as part of the libxenctrl library.

I'm trying to make sure that kernel headers in userspace compile with minimal
dependencies which are gcc and libc.

For me it is clear by now that many Linux API's and ABI's like Xen parts do
not live in the uapi header files and instead there's a separate userspace
library with needed headers and defines which have embedded copies of
the needed API and ABI definitions, like header files.

So how could this file be changed so that it compiles in userspace without
definitions from libxenctrl?

I guess I could copy the needed definitions for domid_t and xen_pfn_t from
xen/interface/xen.h of libxenctrl. That I should have done to begin with
instead of trying to hack something on my own.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15 10:29     ` David Vrabel
  (?)
  (?)
@ 2015-10-15 11:18     ` Mikko Rapeli
  -1 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:18 UTC (permalink / raw)
  To: David Vrabel
  Cc: Russell King, linux-api, Stefano Stabellini, linux-kernel,
	xen-devel, Boris Ostrovsky, linux-arm-kernel

On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> On 15/10/15 06:56, Mikko Rapeli wrote:
> > xen/interface/xen.h is not exported from kernel headers so remove the
> > dependency and provide needed defines for domid_t and xen_pfn_t if they
> > are not already defined by some other e.g. Xen specific headers.
> > 
> > Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> > <5569F9C9.8000607@citrix.com>.
> >
> > The ifdef for ARM is ugly but did not find better solutions for it.
> > 
> > Fixes userspace compilation error:
> > 
> > xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> [...]
> > --- a/include/uapi/xen/privcmd.h
> > +++ b/include/uapi/xen/privcmd.h
> > @@ -35,7 +35,19 @@
> >  
> >  #include <linux/types.h>
> >  #include <linux/compiler.h>
> > -#include <xen/interface/xen.h>
> > +
> > +/* Might be defined by Xen specific headers, but if not */
> > +#ifndef domid_t
> > +typedef __u16 domid_t;
> > +#endif /* domid_t */
> 
> As the kbuild bot points out, this does not work since the existence of
> a typedef cannot be checked with #ifdef.

Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
http://www.spinics.net/lists/linux-api/msg11048.html

> I'm not really sure what problem you're trying to solve.  A user space
> program making use of this interface gets the domid_t and xen_pfn_t etc
> typedefs from the headers provided as part of the libxenctrl library.

I'm trying to make sure that kernel headers in userspace compile with minimal
dependencies which are gcc and libc.

For me it is clear by now that many Linux API's and ABI's like Xen parts do
not live in the uapi header files and instead there's a separate userspace
library with needed headers and defines which have embedded copies of
the needed API and ABI definitions, like header files.

So how could this file be changed so that it compiles in userspace without
definitions from libxenctrl?

I guess I could copy the needed definitions for domid_t and xen_pfn_t from
xen/interface/xen.h of libxenctrl. That I should have done to begin with
instead of trying to hack something on my own.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:24         ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 11:24 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Stefano Stabellini, Russell King,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, xen-devel,
	linux-arm-kernel, linux-api

On 15/10/15 12:18, Mikko Rapeli wrote:
> On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
>> On 15/10/15 06:56, Mikko Rapeli wrote:
>>> xen/interface/xen.h is not exported from kernel headers so remove the
>>> dependency and provide needed defines for domid_t and xen_pfn_t if they
>>> are not already defined by some other e.g. Xen specific headers.
>>>
>>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
>>> <5569F9C9.8000607@citrix.com>.
>>>
>>> The ifdef for ARM is ugly but did not find better solutions for it.
>>>
>>> Fixes userspace compilation error:
>>>
>>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
>> [...]
>>> --- a/include/uapi/xen/privcmd.h
>>> +++ b/include/uapi/xen/privcmd.h
>>> @@ -35,7 +35,19 @@
>>>  
>>>  #include <linux/types.h>
>>>  #include <linux/compiler.h>
>>> -#include <xen/interface/xen.h>
>>> +
>>> +/* Might be defined by Xen specific headers, but if not */
>>> +#ifndef domid_t
>>> +typedef __u16 domid_t;
>>> +#endif /* domid_t */
>>
>> As the kbuild bot points out, this does not work since the existence of
>> a typedef cannot be checked with #ifdef.
> 
> Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> http://www.spinics.net/lists/linux-api/msg11048.html
> 
>> I'm not really sure what problem you're trying to solve.  A user space
>> program making use of this interface gets the domid_t and xen_pfn_t etc
>> typedefs from the headers provided as part of the libxenctrl library.
> 
> I'm trying to make sure that kernel headers in userspace compile with minimal
> dependencies which are gcc and libc.
> 
> For me it is clear by now that many Linux API's and ABI's like Xen parts do
> not live in the uapi header files and instead there's a separate userspace
> library with needed headers and defines which have embedded copies of
> the needed API and ABI definitions, like header files.
> 
> So how could this file be changed so that it compiles in userspace without
> definitions from libxenctrl?

I don't think anything needs to be changed.

Instead I would make your compilation check of this header dependent on
the existence of the xen/interface/xen.h header. Or you may exclude the
check of this header entirely.

> I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> xen/interface/xen.h of libxenctrl. That I should have done to begin with
> instead of trying to hack something on my own.

I do not want definitions duplicated/copied from the hypervisor ABI
headers.  This causes problems when support for new architectures is
added (for example).

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:24         ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 11:24 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Stefano Stabellini,
	Russell King, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On 15/10/15 12:18, Mikko Rapeli wrote:
> On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
>> On 15/10/15 06:56, Mikko Rapeli wrote:
>>> xen/interface/xen.h is not exported from kernel headers so remove the
>>> dependency and provide needed defines for domid_t and xen_pfn_t if they
>>> are not already defined by some other e.g. Xen specific headers.
>>>
>>> Suggested by Andrew Cooper <andrew.cooper3-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org> on lkml message
>>> <5569F9C9.8000607-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>.
>>>
>>> The ifdef for ARM is ugly but did not find better solutions for it.
>>>
>>> Fixes userspace compilation error:
>>>
>>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
>> [...]
>>> --- a/include/uapi/xen/privcmd.h
>>> +++ b/include/uapi/xen/privcmd.h
>>> @@ -35,7 +35,19 @@
>>>  
>>>  #include <linux/types.h>
>>>  #include <linux/compiler.h>
>>> -#include <xen/interface/xen.h>
>>> +
>>> +/* Might be defined by Xen specific headers, but if not */
>>> +#ifndef domid_t
>>> +typedef __u16 domid_t;
>>> +#endif /* domid_t */
>>
>> As the kbuild bot points out, this does not work since the existence of
>> a typedef cannot be checked with #ifdef.
> 
> Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> http://www.spinics.net/lists/linux-api/msg11048.html
> 
>> I'm not really sure what problem you're trying to solve.  A user space
>> program making use of this interface gets the domid_t and xen_pfn_t etc
>> typedefs from the headers provided as part of the libxenctrl library.
> 
> I'm trying to make sure that kernel headers in userspace compile with minimal
> dependencies which are gcc and libc.
> 
> For me it is clear by now that many Linux API's and ABI's like Xen parts do
> not live in the uapi header files and instead there's a separate userspace
> library with needed headers and defines which have embedded copies of
> the needed API and ABI definitions, like header files.
> 
> So how could this file be changed so that it compiles in userspace without
> definitions from libxenctrl?

I don't think anything needs to be changed.

Instead I would make your compilation check of this header dependent on
the existence of the xen/interface/xen.h header. Or you may exclude the
check of this header entirely.

> I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> xen/interface/xen.h of libxenctrl. That I should have done to begin with
> instead of trying to hack something on my own.

I do not want definitions duplicated/copied from the hypervisor ABI
headers.  This causes problems when support for new architectures is
added (for example).

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:24         ` David Vrabel
  0 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 11:24 UTC (permalink / raw)
  To: linux-arm-kernel

On 15/10/15 12:18, Mikko Rapeli wrote:
> On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
>> On 15/10/15 06:56, Mikko Rapeli wrote:
>>> xen/interface/xen.h is not exported from kernel headers so remove the
>>> dependency and provide needed defines for domid_t and xen_pfn_t if they
>>> are not already defined by some other e.g. Xen specific headers.
>>>
>>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
>>> <5569F9C9.8000607@citrix.com>.
>>>
>>> The ifdef for ARM is ugly but did not find better solutions for it.
>>>
>>> Fixes userspace compilation error:
>>>
>>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
>> [...]
>>> --- a/include/uapi/xen/privcmd.h
>>> +++ b/include/uapi/xen/privcmd.h
>>> @@ -35,7 +35,19 @@
>>>  
>>>  #include <linux/types.h>
>>>  #include <linux/compiler.h>
>>> -#include <xen/interface/xen.h>
>>> +
>>> +/* Might be defined by Xen specific headers, but if not */
>>> +#ifndef domid_t
>>> +typedef __u16 domid_t;
>>> +#endif /* domid_t */
>>
>> As the kbuild bot points out, this does not work since the existence of
>> a typedef cannot be checked with #ifdef.
> 
> Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> http://www.spinics.net/lists/linux-api/msg11048.html
> 
>> I'm not really sure what problem you're trying to solve.  A user space
>> program making use of this interface gets the domid_t and xen_pfn_t etc
>> typedefs from the headers provided as part of the libxenctrl library.
> 
> I'm trying to make sure that kernel headers in userspace compile with minimal
> dependencies which are gcc and libc.
> 
> For me it is clear by now that many Linux API's and ABI's like Xen parts do
> not live in the uapi header files and instead there's a separate userspace
> library with needed headers and defines which have embedded copies of
> the needed API and ABI definitions, like header files.
> 
> So how could this file be changed so that it compiles in userspace without
> definitions from libxenctrl?

I don't think anything needs to be changed.

Instead I would make your compilation check of this header dependent on
the existence of the xen/interface/xen.h header. Or you may exclude the
check of this header entirely.

> I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> xen/interface/xen.h of libxenctrl. That I should have done to begin with
> instead of trying to hack something on my own.

I do not want definitions duplicated/copied from the hypervisor ABI
headers.  This causes problems when support for new architectures is
added (for example).

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15 11:18       ` Mikko Rapeli
  (?)
@ 2015-10-15 11:24       ` David Vrabel
  -1 siblings, 0 replies; 206+ messages in thread
From: David Vrabel @ 2015-10-15 11:24 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Russell King, linux-api, Stefano Stabellini, linux-kernel,
	xen-devel, Boris Ostrovsky, linux-arm-kernel

On 15/10/15 12:18, Mikko Rapeli wrote:
> On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
>> On 15/10/15 06:56, Mikko Rapeli wrote:
>>> xen/interface/xen.h is not exported from kernel headers so remove the
>>> dependency and provide needed defines for domid_t and xen_pfn_t if they
>>> are not already defined by some other e.g. Xen specific headers.
>>>
>>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
>>> <5569F9C9.8000607@citrix.com>.
>>>
>>> The ifdef for ARM is ugly but did not find better solutions for it.
>>>
>>> Fixes userspace compilation error:
>>>
>>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
>> [...]
>>> --- a/include/uapi/xen/privcmd.h
>>> +++ b/include/uapi/xen/privcmd.h
>>> @@ -35,7 +35,19 @@
>>>  
>>>  #include <linux/types.h>
>>>  #include <linux/compiler.h>
>>> -#include <xen/interface/xen.h>
>>> +
>>> +/* Might be defined by Xen specific headers, but if not */
>>> +#ifndef domid_t
>>> +typedef __u16 domid_t;
>>> +#endif /* domid_t */
>>
>> As the kbuild bot points out, this does not work since the existence of
>> a typedef cannot be checked with #ifdef.
> 
> Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> http://www.spinics.net/lists/linux-api/msg11048.html
> 
>> I'm not really sure what problem you're trying to solve.  A user space
>> program making use of this interface gets the domid_t and xen_pfn_t etc
>> typedefs from the headers provided as part of the libxenctrl library.
> 
> I'm trying to make sure that kernel headers in userspace compile with minimal
> dependencies which are gcc and libc.
> 
> For me it is clear by now that many Linux API's and ABI's like Xen parts do
> not live in the uapi header files and instead there's a separate userspace
> library with needed headers and defines which have embedded copies of
> the needed API and ABI definitions, like header files.
> 
> So how could this file be changed so that it compiles in userspace without
> definitions from libxenctrl?

I don't think anything needs to be changed.

Instead I would make your compilation check of this header dependent on
the existence of the xen/interface/xen.h header. Or you may exclude the
check of this header entirely.

> I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> xen/interface/xen.h of libxenctrl. That I should have done to begin with
> instead of trying to hack something on my own.

I do not want definitions duplicated/copied from the hypervisor ABI
headers.  This causes problems when support for new architectures is
added (for example).

David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:35           ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:35 UTC (permalink / raw)
  To: David Vrabel
  Cc: linux-kernel, Stefano Stabellini, Russell King,
	Konrad Rzeszutek Wilk, Boris Ostrovsky, xen-devel,
	linux-arm-kernel, linux-api

On Thu, Oct 15, 2015 at 12:24:39PM +0100, David Vrabel wrote:
> On 15/10/15 12:18, Mikko Rapeli wrote:
> > On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> >> On 15/10/15 06:56, Mikko Rapeli wrote:
> >>> xen/interface/xen.h is not exported from kernel headers so remove the
> >>> dependency and provide needed defines for domid_t and xen_pfn_t if they
> >>> are not already defined by some other e.g. Xen specific headers.
> >>>
> >>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> >>> <5569F9C9.8000607@citrix.com>.
> >>>
> >>> The ifdef for ARM is ugly but did not find better solutions for it.
> >>>
> >>> Fixes userspace compilation error:
> >>>
> >>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> >> [...]
> >>> --- a/include/uapi/xen/privcmd.h
> >>> +++ b/include/uapi/xen/privcmd.h
> >>> @@ -35,7 +35,19 @@
> >>>  
> >>>  #include <linux/types.h>
> >>>  #include <linux/compiler.h>
> >>> -#include <xen/interface/xen.h>
> >>> +
> >>> +/* Might be defined by Xen specific headers, but if not */
> >>> +#ifndef domid_t
> >>> +typedef __u16 domid_t;
> >>> +#endif /* domid_t */
> >>
> >> As the kbuild bot points out, this does not work since the existence of
> >> a typedef cannot be checked with #ifdef.
> > 
> > Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> > http://www.spinics.net/lists/linux-api/msg11048.html
> > 
> >> I'm not really sure what problem you're trying to solve.  A user space
> >> program making use of this interface gets the domid_t and xen_pfn_t etc
> >> typedefs from the headers provided as part of the libxenctrl library.
> > 
> > I'm trying to make sure that kernel headers in userspace compile with minimal
> > dependencies which are gcc and libc.
> > 
> > For me it is clear by now that many Linux API's and ABI's like Xen parts do
> > not live in the uapi header files and instead there's a separate userspace
> > library with needed headers and defines which have embedded copies of
> > the needed API and ABI definitions, like header files.
> > 
> > So how could this file be changed so that it compiles in userspace without
> > definitions from libxenctrl?
> 
> I don't think anything needs to be changed.
> 
> Instead I would make your compilation check of this header dependent on
> the existence of the xen/interface/xen.h header. Or you may exclude the
> check of this header entirely.

There are not many headers in uapi which require additional userspace
headers to compile (I'm not saying that uapi headers represent the full
API's/ABI's, it's clear they don't). If there are ~700 headers and just a
single one needs an exception and additional dependencies, I would try to
make it work without the dependency. I just need some advice and guidance
from maintainers how to do this.

Or we should start tracking these userspace library dependencies too,
at least at linux-headers package levels in distributions. This might
be a good idea anyway, but then we might as well move headers like this
directly to the userspace library and out of include/uapi.

Both would solve the non-compiling uapi header problem.

> > I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> > xen/interface/xen.h of libxenctrl. That I should have done to begin with
> > instead of trying to hack something on my own.
> 
> I do not want definitions duplicated/copied from the hypervisor ABI
> headers.  This causes problems when support for new architectures is
> added (for example).

Understood.

-Mikko

> David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:35           ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:35 UTC (permalink / raw)
  To: David Vrabel
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Stefano Stabellini,
	Russell King, Konrad Rzeszutek Wilk, Boris Ostrovsky,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 12:24:39PM +0100, David Vrabel wrote:
> On 15/10/15 12:18, Mikko Rapeli wrote:
> > On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> >> On 15/10/15 06:56, Mikko Rapeli wrote:
> >>> xen/interface/xen.h is not exported from kernel headers so remove the
> >>> dependency and provide needed defines for domid_t and xen_pfn_t if they
> >>> are not already defined by some other e.g. Xen specific headers.
> >>>
> >>> Suggested by Andrew Cooper <andrew.cooper3-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org> on lkml message
> >>> <5569F9C9.8000607-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>.
> >>>
> >>> The ifdef for ARM is ugly but did not find better solutions for it.
> >>>
> >>> Fixes userspace compilation error:
> >>>
> >>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> >> [...]
> >>> --- a/include/uapi/xen/privcmd.h
> >>> +++ b/include/uapi/xen/privcmd.h
> >>> @@ -35,7 +35,19 @@
> >>>  
> >>>  #include <linux/types.h>
> >>>  #include <linux/compiler.h>
> >>> -#include <xen/interface/xen.h>
> >>> +
> >>> +/* Might be defined by Xen specific headers, but if not */
> >>> +#ifndef domid_t
> >>> +typedef __u16 domid_t;
> >>> +#endif /* domid_t */
> >>
> >> As the kbuild bot points out, this does not work since the existence of
> >> a typedef cannot be checked with #ifdef.
> > 
> > Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> > http://www.spinics.net/lists/linux-api/msg11048.html
> > 
> >> I'm not really sure what problem you're trying to solve.  A user space
> >> program making use of this interface gets the domid_t and xen_pfn_t etc
> >> typedefs from the headers provided as part of the libxenctrl library.
> > 
> > I'm trying to make sure that kernel headers in userspace compile with minimal
> > dependencies which are gcc and libc.
> > 
> > For me it is clear by now that many Linux API's and ABI's like Xen parts do
> > not live in the uapi header files and instead there's a separate userspace
> > library with needed headers and defines which have embedded copies of
> > the needed API and ABI definitions, like header files.
> > 
> > So how could this file be changed so that it compiles in userspace without
> > definitions from libxenctrl?
> 
> I don't think anything needs to be changed.
> 
> Instead I would make your compilation check of this header dependent on
> the existence of the xen/interface/xen.h header. Or you may exclude the
> check of this header entirely.

There are not many headers in uapi which require additional userspace
headers to compile (I'm not saying that uapi headers represent the full
API's/ABI's, it's clear they don't). If there are ~700 headers and just a
single one needs an exception and additional dependencies, I would try to
make it work without the dependency. I just need some advice and guidance
from maintainers how to do this.

Or we should start tracking these userspace library dependencies too,
at least at linux-headers package levels in distributions. This might
be a good idea anyway, but then we might as well move headers like this
directly to the userspace library and out of include/uapi.

Both would solve the non-compiling uapi header problem.

> > I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> > xen/interface/xen.h of libxenctrl. That I should have done to begin with
> > instead of trying to hack something on my own.
> 
> I do not want definitions duplicated/copied from the hypervisor ABI
> headers.  This causes problems when support for new architectures is
> added (for example).

Understood.

-Mikko

> David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
@ 2015-10-15 11:35           ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:35 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Oct 15, 2015 at 12:24:39PM +0100, David Vrabel wrote:
> On 15/10/15 12:18, Mikko Rapeli wrote:
> > On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> >> On 15/10/15 06:56, Mikko Rapeli wrote:
> >>> xen/interface/xen.h is not exported from kernel headers so remove the
> >>> dependency and provide needed defines for domid_t and xen_pfn_t if they
> >>> are not already defined by some other e.g. Xen specific headers.
> >>>
> >>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> >>> <5569F9C9.8000607@citrix.com>.
> >>>
> >>> The ifdef for ARM is ugly but did not find better solutions for it.
> >>>
> >>> Fixes userspace compilation error:
> >>>
> >>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> >> [...]
> >>> --- a/include/uapi/xen/privcmd.h
> >>> +++ b/include/uapi/xen/privcmd.h
> >>> @@ -35,7 +35,19 @@
> >>>  
> >>>  #include <linux/types.h>
> >>>  #include <linux/compiler.h>
> >>> -#include <xen/interface/xen.h>
> >>> +
> >>> +/* Might be defined by Xen specific headers, but if not */
> >>> +#ifndef domid_t
> >>> +typedef __u16 domid_t;
> >>> +#endif /* domid_t */
> >>
> >> As the kbuild bot points out, this does not work since the existence of
> >> a typedef cannot be checked with #ifdef.
> > 
> > Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> > http://www.spinics.net/lists/linux-api/msg11048.html
> > 
> >> I'm not really sure what problem you're trying to solve.  A user space
> >> program making use of this interface gets the domid_t and xen_pfn_t etc
> >> typedefs from the headers provided as part of the libxenctrl library.
> > 
> > I'm trying to make sure that kernel headers in userspace compile with minimal
> > dependencies which are gcc and libc.
> > 
> > For me it is clear by now that many Linux API's and ABI's like Xen parts do
> > not live in the uapi header files and instead there's a separate userspace
> > library with needed headers and defines which have embedded copies of
> > the needed API and ABI definitions, like header files.
> > 
> > So how could this file be changed so that it compiles in userspace without
> > definitions from libxenctrl?
> 
> I don't think anything needs to be changed.
> 
> Instead I would make your compilation check of this header dependent on
> the existence of the xen/interface/xen.h header. Or you may exclude the
> check of this header entirely.

There are not many headers in uapi which require additional userspace
headers to compile (I'm not saying that uapi headers represent the full
API's/ABI's, it's clear they don't). If there are ~700 headers and just a
single one needs an exception and additional dependencies, I would try to
make it work without the dependency. I just need some advice and guidance
from maintainers how to do this.

Or we should start tracking these userspace library dependencies too,
at least at linux-headers package levels in distributions. This might
be a good idea anyway, but then we might as well move headers like this
directly to the userspace library and out of include/uapi.

Both would solve the non-compiling uapi header problem.

> > I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> > xen/interface/xen.h of libxenctrl. That I should have done to begin with
> > instead of trying to hack something on my own.
> 
> I do not want definitions duplicated/copied from the hypervisor ABI
> headers.  This causes problems when support for new architectures is
> added (for example).

Understood.

-Mikko

> David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace
  2015-10-15 11:24         ` David Vrabel
                           ` (2 preceding siblings ...)
  (?)
@ 2015-10-15 11:35         ` Mikko Rapeli
  -1 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 11:35 UTC (permalink / raw)
  To: David Vrabel
  Cc: Russell King, linux-api, Stefano Stabellini, linux-kernel,
	xen-devel, Boris Ostrovsky, linux-arm-kernel

On Thu, Oct 15, 2015 at 12:24:39PM +0100, David Vrabel wrote:
> On 15/10/15 12:18, Mikko Rapeli wrote:
> > On Thu, Oct 15, 2015 at 11:29:12AM +0100, David Vrabel wrote:
> >> On 15/10/15 06:56, Mikko Rapeli wrote:
> >>> xen/interface/xen.h is not exported from kernel headers so remove the
> >>> dependency and provide needed defines for domid_t and xen_pfn_t if they
> >>> are not already defined by some other e.g. Xen specific headers.
> >>>
> >>> Suggested by Andrew Cooper <andrew.cooper3@citrix.com> on lkml message
> >>> <5569F9C9.8000607@citrix.com>.
> >>>
> >>> The ifdef for ARM is ugly but did not find better solutions for it.
> >>>
> >>> Fixes userspace compilation error:
> >>>
> >>> xen/privcmd.h:38:31: fatal error: xen/interface/xen.h: No such file or directory
> >> [...]
> >>> --- a/include/uapi/xen/privcmd.h
> >>> +++ b/include/uapi/xen/privcmd.h
> >>> @@ -35,7 +35,19 @@
> >>>  
> >>>  #include <linux/types.h>
> >>>  #include <linux/compiler.h>
> >>> -#include <xen/interface/xen.h>
> >>> +
> >>> +/* Might be defined by Xen specific headers, but if not */
> >>> +#ifndef domid_t
> >>> +typedef __u16 domid_t;
> >>> +#endif /* domid_t */
> >>
> >> As the kbuild bot points out, this does not work since the existence of
> >> a typedef cannot be checked with #ifdef.
> > 
> > Yeah, this hack doesn't cut it. Sorry. Tried to implement these changes:
> > http://www.spinics.net/lists/linux-api/msg11048.html
> > 
> >> I'm not really sure what problem you're trying to solve.  A user space
> >> program making use of this interface gets the domid_t and xen_pfn_t etc
> >> typedefs from the headers provided as part of the libxenctrl library.
> > 
> > I'm trying to make sure that kernel headers in userspace compile with minimal
> > dependencies which are gcc and libc.
> > 
> > For me it is clear by now that many Linux API's and ABI's like Xen parts do
> > not live in the uapi header files and instead there's a separate userspace
> > library with needed headers and defines which have embedded copies of
> > the needed API and ABI definitions, like header files.
> > 
> > So how could this file be changed so that it compiles in userspace without
> > definitions from libxenctrl?
> 
> I don't think anything needs to be changed.
> 
> Instead I would make your compilation check of this header dependent on
> the existence of the xen/interface/xen.h header. Or you may exclude the
> check of this header entirely.

There are not many headers in uapi which require additional userspace
headers to compile (I'm not saying that uapi headers represent the full
API's/ABI's, it's clear they don't). If there are ~700 headers and just a
single one needs an exception and additional dependencies, I would try to
make it work without the dependency. I just need some advice and guidance
from maintainers how to do this.

Or we should start tracking these userspace library dependencies too,
at least at linux-headers package levels in distributions. This might
be a good idea anyway, but then we might as well move headers like this
directly to the userspace library and out of include/uapi.

Both would solve the non-compiling uapi header problem.

> > I guess I could copy the needed definitions for domid_t and xen_pfn_t from
> > xen/interface/xen.h of libxenctrl. That I should have done to begin with
> > instead of trying to hack something on my own.
> 
> I do not want definitions duplicated/copied from the hypervisor ABI
> headers.  This causes problems when support for new architectures is
> added (for example).

Understood.

-Mikko

> David

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-15 13:32     ` Alex Deucher
  0 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-15 13:32 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: LKML, Maling list - DRI developers, linux-api

On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes userspace compilation error:
>
> drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>

NACK on all these type conversions.  This has not been a problem for
years and years and the result looks terrible.

Alex

> ---
>  include/uapi/drm/drm_mode.h | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 359107a..0ed8d9d 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
>
>  /* create a dumb scanout buffer */
>  struct drm_mode_create_dumb {
> -       uint32_t height;
> -       uint32_t width;
> -       uint32_t bpp;
> -       uint32_t flags;
> +       __u32 height;
> +       __u32 width;
> +       __u32 bpp;
> +       __u32 flags;
>         /* handle, pitch, size will be returned */
> -       uint32_t handle;
> -       uint32_t pitch;
> -       uint64_t size;
> +       __u32 handle;
> +       __u32 pitch;
> +       __u64 size;
>  };
>
>  /* set up for mmap of a dumb scanout buffer */
> @@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
>  };
>
>  struct drm_mode_destroy_dumb {
> -       uint32_t handle;
> +       __u32 handle;
>  };
>
>  /* page-flip flags are valid, plus: */
> --
> 2.5.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-15 13:32     ` Alex Deucher
  0 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-15 13:32 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: LKML, Maling list - DRI developers, linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> Fixes userspace compilation error:
>
> drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>

NACK on all these type conversions.  This has not been a problem for
years and years and the result looks terrible.

Alex

> ---
>  include/uapi/drm/drm_mode.h | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 359107a..0ed8d9d 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
>
>  /* create a dumb scanout buffer */
>  struct drm_mode_create_dumb {
> -       uint32_t height;
> -       uint32_t width;
> -       uint32_t bpp;
> -       uint32_t flags;
> +       __u32 height;
> +       __u32 width;
> +       __u32 bpp;
> +       __u32 flags;
>         /* handle, pitch, size will be returned */
> -       uint32_t handle;
> -       uint32_t pitch;
> -       uint64_t size;
> +       __u32 handle;
> +       __u32 pitch;
> +       __u64 size;
>  };
>
>  /* set up for mmap of a dumb scanout buffer */
> @@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
>  };
>
>  struct drm_mode_destroy_dumb {
> -       uint32_t handle;
> +       __u32 handle;
>  };
>
>  /* page-flip flags are valid, plus: */
> --
> 2.5.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-10-15 13:32     ` Alex Deucher
@ 2015-10-15 13:48       ` Mikko Rapeli
  -1 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 13:48 UTC (permalink / raw)
  To: Alex Deucher; +Cc: LKML, Maling list - DRI developers, linux-api

On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compilation error:
> >
> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> 
> NACK on all these type conversions.  This has not been a problem for
> years and years and the result looks terrible.

Documentation/CodingStyle, section 5

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

I have only been looking at kernel headers from userspace occationally in
the past 10 years and had a several cases where the provided headers did
not compile when included into trivial programs trying to use the structs
for an ioctl() for example. This long lasting problem triggered me to write
a test for this and provide these fixes too. In previous reviews usage
of <stdint.h> and its types in kernel headers was already NACK'ed
so I changed several places from uint32_t's to __u32.

With these changes it is btw trivial now to add a grep test the there
are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
rule.

-Mikko

> Alex
> 
> > ---
> >  include/uapi/drm/drm_mode.h | 16 ++++++++--------
> >  1 file changed, 8 insertions(+), 8 deletions(-)
> >
> > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > index 359107a..0ed8d9d 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
> >
> >  /* create a dumb scanout buffer */
> >  struct drm_mode_create_dumb {
> > -       uint32_t height;
> > -       uint32_t width;
> > -       uint32_t bpp;
> > -       uint32_t flags;
> > +       __u32 height;
> > +       __u32 width;
> > +       __u32 bpp;
> > +       __u32 flags;
> >         /* handle, pitch, size will be returned */
> > -       uint32_t handle;
> > -       uint32_t pitch;
> > -       uint64_t size;
> > +       __u32 handle;
> > +       __u32 pitch;
> > +       __u64 size;
> >  };
> >
> >  /* set up for mmap of a dumb scanout buffer */
> > @@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
> >  };
> >
> >  struct drm_mode_destroy_dumb {
> > -       uint32_t handle;
> > +       __u32 handle;
> >  };
> >
> >  /* page-flip flags are valid, plus: */
> > --
> > 2.5.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-15 13:48       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 13:48 UTC (permalink / raw)
  To: Alex Deucher; +Cc: linux-api, LKML, Maling list - DRI developers

On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compilation error:
> >
> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> 
> NACK on all these type conversions.  This has not been a problem for
> years and years and the result looks terrible.

Documentation/CodingStyle, section 5

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

I have only been looking at kernel headers from userspace occationally in
the past 10 years and had a several cases where the provided headers did
not compile when included into trivial programs trying to use the structs
for an ioctl() for example. This long lasting problem triggered me to write
a test for this and provide these fixes too. In previous reviews usage
of <stdint.h> and its types in kernel headers was already NACK'ed
so I changed several places from uint32_t's to __u32.

With these changes it is btw trivial now to add a grep test the there
are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
rule.

-Mikko

> Alex
> 
> > ---
> >  include/uapi/drm/drm_mode.h | 16 ++++++++--------
> >  1 file changed, 8 insertions(+), 8 deletions(-)
> >
> > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> > index 359107a..0ed8d9d 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -508,14 +508,14 @@ struct drm_mode_crtc_page_flip {
> >
> >  /* create a dumb scanout buffer */
> >  struct drm_mode_create_dumb {
> > -       uint32_t height;
> > -       uint32_t width;
> > -       uint32_t bpp;
> > -       uint32_t flags;
> > +       __u32 height;
> > +       __u32 width;
> > +       __u32 bpp;
> > +       __u32 flags;
> >         /* handle, pitch, size will be returned */
> > -       uint32_t handle;
> > -       uint32_t pitch;
> > -       uint64_t size;
> > +       __u32 handle;
> > +       __u32 pitch;
> > +       __u64 size;
> >  };
> >
> >  /* set up for mmap of a dumb scanout buffer */
> > @@ -532,7 +532,7 @@ struct drm_mode_map_dumb {
> >  };
> >
> >  struct drm_mode_destroy_dumb {
> > -       uint32_t handle;
> > +       __u32 handle;
> >  };
> >
> >  /* page-flip flags are valid, plus: */
> > --
> > 2.5.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 15:20     ` Miklos Szeredi
  0 siblings, 0 replies; 206+ messages in thread
From: Miklos Szeredi @ 2015-10-15 15:20 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Kernel headers should not use stdint.h.

Including <linux/types.h> breaks compile of library on non-Linux
archs.  Allowing this patch would mean having a different header in
the fuse lib as the one in the kernel.  This is useless complexity and
a source of bugs.  We've already been there, and much prefer the
current state.

NAK.

Thanks,
Miklos


>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/linux/fuse.h | 440 +++++++++++++++++++++++-----------------------
>  1 file changed, 218 insertions(+), 222 deletions(-)
>
> diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
> index c9aca04..a25e329 100644
> --- a/include/uapi/linux/fuse.h
> +++ b/include/uapi/linux/fuse.h
> @@ -107,11 +107,7 @@
>  #ifndef _LINUX_FUSE_H
>  #define _LINUX_FUSE_H
>
> -#ifdef __KERNEL__
>  #include <linux/types.h>
> -#else
> -#include <stdint.h>
> -#endif
>
>  /*
>   * Version negotiation:
> @@ -146,42 +142,42 @@
>     userspace works under 64bit kernels */
>
>  struct fuse_attr {
> -       uint64_t        ino;
> -       uint64_t        size;
> -       uint64_t        blocks;
> -       uint64_t        atime;
> -       uint64_t        mtime;
> -       uint64_t        ctime;
> -       uint32_t        atimensec;
> -       uint32_t        mtimensec;
> -       uint32_t        ctimensec;
> -       uint32_t        mode;
> -       uint32_t        nlink;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        rdev;
> -       uint32_t        blksize;
> -       uint32_t        padding;
> +       __u64   ino;
> +       __u64   size;
> +       __u64   blocks;
> +       __u64   atime;
> +       __u64   mtime;
> +       __u64   ctime;
> +       __u32   atimensec;
> +       __u32   mtimensec;
> +       __u32   ctimensec;
> +       __u32   mode;
> +       __u32   nlink;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   rdev;
> +       __u32   blksize;
> +       __u32   padding;
>  };
>
>  struct fuse_kstatfs {
> -       uint64_t        blocks;
> -       uint64_t        bfree;
> -       uint64_t        bavail;
> -       uint64_t        files;
> -       uint64_t        ffree;
> -       uint32_t        bsize;
> -       uint32_t        namelen;
> -       uint32_t        frsize;
> -       uint32_t        padding;
> -       uint32_t        spare[6];
> +       __u64   blocks;
> +       __u64   bfree;
> +       __u64   bavail;
> +       __u64   files;
> +       __u64   ffree;
> +       __u32   bsize;
> +       __u32   namelen;
> +       __u32   frsize;
> +       __u32   padding;
> +       __u32   spare[6];
>  };
>
>  struct fuse_file_lock {
> -       uint64_t        start;
> -       uint64_t        end;
> -       uint32_t        type;
> -       uint32_t        pid; /* tgid */
> +       __u64   start;
> +       __u64   end;
> +       __u32   type;
> +       __u32   pid; /* tgid */
>  };
>
>  /**
> @@ -379,149 +375,149 @@ enum fuse_notify_code {
>  #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
>
>  struct fuse_entry_out {
> -       uint64_t        nodeid;         /* Inode ID */
> -       uint64_t        generation;     /* Inode generation: nodeid:gen must
> +       __u64   nodeid;         /* Inode ID */
> +       __u64   generation;     /* Inode generation: nodeid:gen must
>                                            be unique for the fs's lifetime */
> -       uint64_t        entry_valid;    /* Cache timeout for the name */
> -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> -       uint32_t        entry_valid_nsec;
> -       uint32_t        attr_valid_nsec;
> +       __u64   entry_valid;    /* Cache timeout for the name */
> +       __u64   attr_valid;     /* Cache timeout for the attributes */
> +       __u32   entry_valid_nsec;
> +       __u32   attr_valid_nsec;
>         struct fuse_attr attr;
>  };
>
>  struct fuse_forget_in {
> -       uint64_t        nlookup;
> +       __u64   nlookup;
>  };
>
>  struct fuse_forget_one {
> -       uint64_t        nodeid;
> -       uint64_t        nlookup;
> +       __u64   nodeid;
> +       __u64   nlookup;
>  };
>
>  struct fuse_batch_forget_in {
> -       uint32_t        count;
> -       uint32_t        dummy;
> +       __u32   count;
> +       __u32   dummy;
>  };
>
>  struct fuse_getattr_in {
> -       uint32_t        getattr_flags;
> -       uint32_t        dummy;
> -       uint64_t        fh;
> +       __u32   getattr_flags;
> +       __u32   dummy;
> +       __u64   fh;
>  };
>
>  #define FUSE_COMPAT_ATTR_OUT_SIZE 96
>
>  struct fuse_attr_out {
> -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> -       uint32_t        attr_valid_nsec;
> -       uint32_t        dummy;
> +       __u64   attr_valid;     /* Cache timeout for the attributes */
> +       __u32   attr_valid_nsec;
> +       __u32   dummy;
>         struct fuse_attr attr;
>  };
>
>  #define FUSE_COMPAT_MKNOD_IN_SIZE 8
>
>  struct fuse_mknod_in {
> -       uint32_t        mode;
> -       uint32_t        rdev;
> -       uint32_t        umask;
> -       uint32_t        padding;
> +       __u32   mode;
> +       __u32   rdev;
> +       __u32   umask;
> +       __u32   padding;
>  };
>
>  struct fuse_mkdir_in {
> -       uint32_t        mode;
> -       uint32_t        umask;
> +       __u32   mode;
> +       __u32   umask;
>  };
>
>  struct fuse_rename_in {
> -       uint64_t        newdir;
> +       __u64   newdir;
>  };
>
>  struct fuse_rename2_in {
> -       uint64_t        newdir;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   newdir;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  struct fuse_link_in {
> -       uint64_t        oldnodeid;
> +       __u64   oldnodeid;
>  };
>
>  struct fuse_setattr_in {
> -       uint32_t        valid;
> -       uint32_t        padding;
> -       uint64_t        fh;
> -       uint64_t        size;
> -       uint64_t        lock_owner;
> -       uint64_t        atime;
> -       uint64_t        mtime;
> -       uint64_t        ctime;
> -       uint32_t        atimensec;
> -       uint32_t        mtimensec;
> -       uint32_t        ctimensec;
> -       uint32_t        mode;
> -       uint32_t        unused4;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        unused5;
> +       __u32   valid;
> +       __u32   padding;
> +       __u64   fh;
> +       __u64   size;
> +       __u64   lock_owner;
> +       __u64   atime;
> +       __u64   mtime;
> +       __u64   ctime;
> +       __u32   atimensec;
> +       __u32   mtimensec;
> +       __u32   ctimensec;
> +       __u32   mode;
> +       __u32   unused4;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   unused5;
>  };
>
>  struct fuse_open_in {
> -       uint32_t        flags;
> -       uint32_t        unused;
> +       __u32   flags;
> +       __u32   unused;
>  };
>
>  struct fuse_create_in {
> -       uint32_t        flags;
> -       uint32_t        mode;
> -       uint32_t        umask;
> -       uint32_t        padding;
> +       __u32   flags;
> +       __u32   mode;
> +       __u32   umask;
> +       __u32   padding;
>  };
>
>  struct fuse_open_out {
> -       uint64_t        fh;
> -       uint32_t        open_flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u32   open_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_release_in {
> -       uint64_t        fh;
> -       uint32_t        flags;
> -       uint32_t        release_flags;
> -       uint64_t        lock_owner;
> +       __u64   fh;
> +       __u32   flags;
> +       __u32   release_flags;
> +       __u64   lock_owner;
>  };
>
>  struct fuse_flush_in {
> -       uint64_t        fh;
> -       uint32_t        unused;
> -       uint32_t        padding;
> -       uint64_t        lock_owner;
> +       __u64   fh;
> +       __u32   unused;
> +       __u32   padding;
> +       __u64   lock_owner;
>  };
>
>  struct fuse_read_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        read_flags;
> -       uint64_t        lock_owner;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   read_flags;
> +       __u64   lock_owner;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  #define FUSE_COMPAT_WRITE_IN_SIZE 24
>
>  struct fuse_write_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        write_flags;
> -       uint64_t        lock_owner;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   write_flags;
> +       __u64   lock_owner;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  struct fuse_write_out {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  #define FUSE_COMPAT_STATFS_SIZE 48
> @@ -531,32 +527,32 @@ struct fuse_statfs_out {
>  };
>
>  struct fuse_fsync_in {
> -       uint64_t        fh;
> -       uint32_t        fsync_flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u32   fsync_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_setxattr_in {
> -       uint32_t        size;
> -       uint32_t        flags;
> +       __u32   size;
> +       __u32   flags;
>  };
>
>  struct fuse_getxattr_in {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_getxattr_out {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_lk_in {
> -       uint64_t        fh;
> -       uint64_t        owner;
> +       __u64   fh;
> +       __u64   owner;
>         struct fuse_file_lock lk;
> -       uint32_t        lk_flags;
> -       uint32_t        padding;
> +       __u32   lk_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_lk_out {
> @@ -564,140 +560,140 @@ struct fuse_lk_out {
>  };
>
>  struct fuse_access_in {
> -       uint32_t        mask;
> -       uint32_t        padding;
> +       __u32   mask;
> +       __u32   padding;
>  };
>
>  struct fuse_init_in {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        max_readahead;
> -       uint32_t        flags;
> +       __u32   major;
> +       __u32   minor;
> +       __u32   max_readahead;
> +       __u32   flags;
>  };
>
>  #define FUSE_COMPAT_INIT_OUT_SIZE 8
>  #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
>
>  struct fuse_init_out {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        max_readahead;
> -       uint32_t        flags;
> -       uint16_t        max_background;
> -       uint16_t        congestion_threshold;
> -       uint32_t        max_write;
> -       uint32_t        time_gran;
> -       uint32_t        unused[9];
> +       __u32   major;
> +       __u32   minor;
> +       __u32   max_readahead;
> +       __u32   flags;
> +       __u16   max_background;
> +       __u16   congestion_threshold;
> +       __u32   max_write;
> +       __u32   time_gran;
> +       __u32   unused[9];
>  };
>
>  #define CUSE_INIT_INFO_MAX 4096
>
>  struct cuse_init_in {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        unused;
> -       uint32_t        flags;
> +       __u32   major;
> +       __u32   minor;
> +       __u32   unused;
> +       __u32   flags;
>  };
>
>  struct cuse_init_out {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        unused;
> -       uint32_t        flags;
> -       uint32_t        max_read;
> -       uint32_t        max_write;
> -       uint32_t        dev_major;              /* chardev major */
> -       uint32_t        dev_minor;              /* chardev minor */
> -       uint32_t        spare[10];
> +       __u32   major;
> +       __u32   minor;
> +       __u32   unused;
> +       __u32   flags;
> +       __u32   max_read;
> +       __u32   max_write;
> +       __u32   dev_major;              /* chardev major */
> +       __u32   dev_minor;              /* chardev minor */
> +       __u32   spare[10];
>  };
>
>  struct fuse_interrupt_in {
> -       uint64_t        unique;
> +       __u64   unique;
>  };
>
>  struct fuse_bmap_in {
> -       uint64_t        block;
> -       uint32_t        blocksize;
> -       uint32_t        padding;
> +       __u64   block;
> +       __u32   blocksize;
> +       __u32   padding;
>  };
>
>  struct fuse_bmap_out {
> -       uint64_t        block;
> +       __u64   block;
>  };
>
>  struct fuse_ioctl_in {
> -       uint64_t        fh;
> -       uint32_t        flags;
> -       uint32_t        cmd;
> -       uint64_t        arg;
> -       uint32_t        in_size;
> -       uint32_t        out_size;
> +       __u64   fh;
> +       __u32   flags;
> +       __u32   cmd;
> +       __u64   arg;
> +       __u32   in_size;
> +       __u32   out_size;
>  };
>
>  struct fuse_ioctl_iovec {
> -       uint64_t        base;
> -       uint64_t        len;
> +       __u64   base;
> +       __u64   len;
>  };
>
>  struct fuse_ioctl_out {
> -       int32_t         result;
> -       uint32_t        flags;
> -       uint32_t        in_iovs;
> -       uint32_t        out_iovs;
> +       __s32           result;
> +       __u32   flags;
> +       __u32   in_iovs;
> +       __u32   out_iovs;
>  };
>
>  struct fuse_poll_in {
> -       uint64_t        fh;
> -       uint64_t        kh;
> -       uint32_t        flags;
> -       uint32_t        events;
> +       __u64   fh;
> +       __u64   kh;
> +       __u32   flags;
> +       __u32   events;
>  };
>
>  struct fuse_poll_out {
> -       uint32_t        revents;
> -       uint32_t        padding;
> +       __u32   revents;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_poll_wakeup_out {
> -       uint64_t        kh;
> +       __u64   kh;
>  };
>
>  struct fuse_fallocate_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint64_t        length;
> -       uint32_t        mode;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u64   length;
> +       __u32   mode;
> +       __u32   padding;
>  };
>
>  struct fuse_in_header {
> -       uint32_t        len;
> -       uint32_t        opcode;
> -       uint64_t        unique;
> -       uint64_t        nodeid;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        pid;
> -       uint32_t        padding;
> +       __u32   len;
> +       __u32   opcode;
> +       __u64   unique;
> +       __u64   nodeid;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   pid;
> +       __u32   padding;
>  };
>
>  struct fuse_out_header {
> -       uint32_t        len;
> -       int32_t         error;
> -       uint64_t        unique;
> +       __u32   len;
> +       __s32           error;
> +       __u64   unique;
>  };
>
>  struct fuse_dirent {
> -       uint64_t        ino;
> -       uint64_t        off;
> -       uint32_t        namelen;
> -       uint32_t        type;
> +       __u64   ino;
> +       __u64   off;
> +       __u32   namelen;
> +       __u32   type;
>         char name[];
>  };
>
>  #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
>  #define FUSE_DIRENT_ALIGN(x) \
> -       (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
> +       (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
>  #define FUSE_DIRENT_SIZE(d) \
>         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
>
> @@ -712,47 +708,47 @@ struct fuse_direntplus {
>         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
>
>  struct fuse_notify_inval_inode_out {
> -       uint64_t        ino;
> -       int64_t         off;
> -       int64_t         len;
> +       __u64   ino;
> +       __s64           off;
> +       __s64           len;
>  };
>
>  struct fuse_notify_inval_entry_out {
> -       uint64_t        parent;
> -       uint32_t        namelen;
> -       uint32_t        padding;
> +       __u64   parent;
> +       __u32   namelen;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_delete_out {
> -       uint64_t        parent;
> -       uint64_t        child;
> -       uint32_t        namelen;
> -       uint32_t        padding;
> +       __u64   parent;
> +       __u64   child;
> +       __u32   namelen;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_store_out {
> -       uint64_t        nodeid;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u64   nodeid;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_retrieve_out {
> -       uint64_t        notify_unique;
> -       uint64_t        nodeid;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u64   notify_unique;
> +       __u64   nodeid;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  /* Matches the size of fuse_write_in */
>  struct fuse_notify_retrieve_in {
> -       uint64_t        dummy1;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        dummy2;
> -       uint64_t        dummy3;
> -       uint64_t        dummy4;
> +       __u64   dummy1;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   dummy2;
> +       __u64   dummy3;
> +       __u64   dummy4;
>  };
>
>  /* Device ioctls: */
> --
> 2.5.0
>

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 15:20     ` Miklos Szeredi
  0 siblings, 0 replies; 206+ messages in thread
From: Miklos Szeredi @ 2015-10-15 15:20 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> Kernel headers should not use stdint.h.

Including <linux/types.h> breaks compile of library on non-Linux
archs.  Allowing this patch would mean having a different header in
the fuse lib as the one in the kernel.  This is useless complexity and
a source of bugs.  We've already been there, and much prefer the
current state.

NAK.

Thanks,
Miklos


>
> Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> ---
>  include/uapi/linux/fuse.h | 440 +++++++++++++++++++++++-----------------------
>  1 file changed, 218 insertions(+), 222 deletions(-)
>
> diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
> index c9aca04..a25e329 100644
> --- a/include/uapi/linux/fuse.h
> +++ b/include/uapi/linux/fuse.h
> @@ -107,11 +107,7 @@
>  #ifndef _LINUX_FUSE_H
>  #define _LINUX_FUSE_H
>
> -#ifdef __KERNEL__
>  #include <linux/types.h>
> -#else
> -#include <stdint.h>
> -#endif
>
>  /*
>   * Version negotiation:
> @@ -146,42 +142,42 @@
>     userspace works under 64bit kernels */
>
>  struct fuse_attr {
> -       uint64_t        ino;
> -       uint64_t        size;
> -       uint64_t        blocks;
> -       uint64_t        atime;
> -       uint64_t        mtime;
> -       uint64_t        ctime;
> -       uint32_t        atimensec;
> -       uint32_t        mtimensec;
> -       uint32_t        ctimensec;
> -       uint32_t        mode;
> -       uint32_t        nlink;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        rdev;
> -       uint32_t        blksize;
> -       uint32_t        padding;
> +       __u64   ino;
> +       __u64   size;
> +       __u64   blocks;
> +       __u64   atime;
> +       __u64   mtime;
> +       __u64   ctime;
> +       __u32   atimensec;
> +       __u32   mtimensec;
> +       __u32   ctimensec;
> +       __u32   mode;
> +       __u32   nlink;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   rdev;
> +       __u32   blksize;
> +       __u32   padding;
>  };
>
>  struct fuse_kstatfs {
> -       uint64_t        blocks;
> -       uint64_t        bfree;
> -       uint64_t        bavail;
> -       uint64_t        files;
> -       uint64_t        ffree;
> -       uint32_t        bsize;
> -       uint32_t        namelen;
> -       uint32_t        frsize;
> -       uint32_t        padding;
> -       uint32_t        spare[6];
> +       __u64   blocks;
> +       __u64   bfree;
> +       __u64   bavail;
> +       __u64   files;
> +       __u64   ffree;
> +       __u32   bsize;
> +       __u32   namelen;
> +       __u32   frsize;
> +       __u32   padding;
> +       __u32   spare[6];
>  };
>
>  struct fuse_file_lock {
> -       uint64_t        start;
> -       uint64_t        end;
> -       uint32_t        type;
> -       uint32_t        pid; /* tgid */
> +       __u64   start;
> +       __u64   end;
> +       __u32   type;
> +       __u32   pid; /* tgid */
>  };
>
>  /**
> @@ -379,149 +375,149 @@ enum fuse_notify_code {
>  #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
>
>  struct fuse_entry_out {
> -       uint64_t        nodeid;         /* Inode ID */
> -       uint64_t        generation;     /* Inode generation: nodeid:gen must
> +       __u64   nodeid;         /* Inode ID */
> +       __u64   generation;     /* Inode generation: nodeid:gen must
>                                            be unique for the fs's lifetime */
> -       uint64_t        entry_valid;    /* Cache timeout for the name */
> -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> -       uint32_t        entry_valid_nsec;
> -       uint32_t        attr_valid_nsec;
> +       __u64   entry_valid;    /* Cache timeout for the name */
> +       __u64   attr_valid;     /* Cache timeout for the attributes */
> +       __u32   entry_valid_nsec;
> +       __u32   attr_valid_nsec;
>         struct fuse_attr attr;
>  };
>
>  struct fuse_forget_in {
> -       uint64_t        nlookup;
> +       __u64   nlookup;
>  };
>
>  struct fuse_forget_one {
> -       uint64_t        nodeid;
> -       uint64_t        nlookup;
> +       __u64   nodeid;
> +       __u64   nlookup;
>  };
>
>  struct fuse_batch_forget_in {
> -       uint32_t        count;
> -       uint32_t        dummy;
> +       __u32   count;
> +       __u32   dummy;
>  };
>
>  struct fuse_getattr_in {
> -       uint32_t        getattr_flags;
> -       uint32_t        dummy;
> -       uint64_t        fh;
> +       __u32   getattr_flags;
> +       __u32   dummy;
> +       __u64   fh;
>  };
>
>  #define FUSE_COMPAT_ATTR_OUT_SIZE 96
>
>  struct fuse_attr_out {
> -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> -       uint32_t        attr_valid_nsec;
> -       uint32_t        dummy;
> +       __u64   attr_valid;     /* Cache timeout for the attributes */
> +       __u32   attr_valid_nsec;
> +       __u32   dummy;
>         struct fuse_attr attr;
>  };
>
>  #define FUSE_COMPAT_MKNOD_IN_SIZE 8
>
>  struct fuse_mknod_in {
> -       uint32_t        mode;
> -       uint32_t        rdev;
> -       uint32_t        umask;
> -       uint32_t        padding;
> +       __u32   mode;
> +       __u32   rdev;
> +       __u32   umask;
> +       __u32   padding;
>  };
>
>  struct fuse_mkdir_in {
> -       uint32_t        mode;
> -       uint32_t        umask;
> +       __u32   mode;
> +       __u32   umask;
>  };
>
>  struct fuse_rename_in {
> -       uint64_t        newdir;
> +       __u64   newdir;
>  };
>
>  struct fuse_rename2_in {
> -       uint64_t        newdir;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   newdir;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  struct fuse_link_in {
> -       uint64_t        oldnodeid;
> +       __u64   oldnodeid;
>  };
>
>  struct fuse_setattr_in {
> -       uint32_t        valid;
> -       uint32_t        padding;
> -       uint64_t        fh;
> -       uint64_t        size;
> -       uint64_t        lock_owner;
> -       uint64_t        atime;
> -       uint64_t        mtime;
> -       uint64_t        ctime;
> -       uint32_t        atimensec;
> -       uint32_t        mtimensec;
> -       uint32_t        ctimensec;
> -       uint32_t        mode;
> -       uint32_t        unused4;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        unused5;
> +       __u32   valid;
> +       __u32   padding;
> +       __u64   fh;
> +       __u64   size;
> +       __u64   lock_owner;
> +       __u64   atime;
> +       __u64   mtime;
> +       __u64   ctime;
> +       __u32   atimensec;
> +       __u32   mtimensec;
> +       __u32   ctimensec;
> +       __u32   mode;
> +       __u32   unused4;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   unused5;
>  };
>
>  struct fuse_open_in {
> -       uint32_t        flags;
> -       uint32_t        unused;
> +       __u32   flags;
> +       __u32   unused;
>  };
>
>  struct fuse_create_in {
> -       uint32_t        flags;
> -       uint32_t        mode;
> -       uint32_t        umask;
> -       uint32_t        padding;
> +       __u32   flags;
> +       __u32   mode;
> +       __u32   umask;
> +       __u32   padding;
>  };
>
>  struct fuse_open_out {
> -       uint64_t        fh;
> -       uint32_t        open_flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u32   open_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_release_in {
> -       uint64_t        fh;
> -       uint32_t        flags;
> -       uint32_t        release_flags;
> -       uint64_t        lock_owner;
> +       __u64   fh;
> +       __u32   flags;
> +       __u32   release_flags;
> +       __u64   lock_owner;
>  };
>
>  struct fuse_flush_in {
> -       uint64_t        fh;
> -       uint32_t        unused;
> -       uint32_t        padding;
> -       uint64_t        lock_owner;
> +       __u64   fh;
> +       __u32   unused;
> +       __u32   padding;
> +       __u64   lock_owner;
>  };
>
>  struct fuse_read_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        read_flags;
> -       uint64_t        lock_owner;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   read_flags;
> +       __u64   lock_owner;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  #define FUSE_COMPAT_WRITE_IN_SIZE 24
>
>  struct fuse_write_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        write_flags;
> -       uint64_t        lock_owner;
> -       uint32_t        flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   write_flags;
> +       __u64   lock_owner;
> +       __u32   flags;
> +       __u32   padding;
>  };
>
>  struct fuse_write_out {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  #define FUSE_COMPAT_STATFS_SIZE 48
> @@ -531,32 +527,32 @@ struct fuse_statfs_out {
>  };
>
>  struct fuse_fsync_in {
> -       uint64_t        fh;
> -       uint32_t        fsync_flags;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u32   fsync_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_setxattr_in {
> -       uint32_t        size;
> -       uint32_t        flags;
> +       __u32   size;
> +       __u32   flags;
>  };
>
>  struct fuse_getxattr_in {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_getxattr_out {
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_lk_in {
> -       uint64_t        fh;
> -       uint64_t        owner;
> +       __u64   fh;
> +       __u64   owner;
>         struct fuse_file_lock lk;
> -       uint32_t        lk_flags;
> -       uint32_t        padding;
> +       __u32   lk_flags;
> +       __u32   padding;
>  };
>
>  struct fuse_lk_out {
> @@ -564,140 +560,140 @@ struct fuse_lk_out {
>  };
>
>  struct fuse_access_in {
> -       uint32_t        mask;
> -       uint32_t        padding;
> +       __u32   mask;
> +       __u32   padding;
>  };
>
>  struct fuse_init_in {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        max_readahead;
> -       uint32_t        flags;
> +       __u32   major;
> +       __u32   minor;
> +       __u32   max_readahead;
> +       __u32   flags;
>  };
>
>  #define FUSE_COMPAT_INIT_OUT_SIZE 8
>  #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
>
>  struct fuse_init_out {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        max_readahead;
> -       uint32_t        flags;
> -       uint16_t        max_background;
> -       uint16_t        congestion_threshold;
> -       uint32_t        max_write;
> -       uint32_t        time_gran;
> -       uint32_t        unused[9];
> +       __u32   major;
> +       __u32   minor;
> +       __u32   max_readahead;
> +       __u32   flags;
> +       __u16   max_background;
> +       __u16   congestion_threshold;
> +       __u32   max_write;
> +       __u32   time_gran;
> +       __u32   unused[9];
>  };
>
>  #define CUSE_INIT_INFO_MAX 4096
>
>  struct cuse_init_in {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        unused;
> -       uint32_t        flags;
> +       __u32   major;
> +       __u32   minor;
> +       __u32   unused;
> +       __u32   flags;
>  };
>
>  struct cuse_init_out {
> -       uint32_t        major;
> -       uint32_t        minor;
> -       uint32_t        unused;
> -       uint32_t        flags;
> -       uint32_t        max_read;
> -       uint32_t        max_write;
> -       uint32_t        dev_major;              /* chardev major */
> -       uint32_t        dev_minor;              /* chardev minor */
> -       uint32_t        spare[10];
> +       __u32   major;
> +       __u32   minor;
> +       __u32   unused;
> +       __u32   flags;
> +       __u32   max_read;
> +       __u32   max_write;
> +       __u32   dev_major;              /* chardev major */
> +       __u32   dev_minor;              /* chardev minor */
> +       __u32   spare[10];
>  };
>
>  struct fuse_interrupt_in {
> -       uint64_t        unique;
> +       __u64   unique;
>  };
>
>  struct fuse_bmap_in {
> -       uint64_t        block;
> -       uint32_t        blocksize;
> -       uint32_t        padding;
> +       __u64   block;
> +       __u32   blocksize;
> +       __u32   padding;
>  };
>
>  struct fuse_bmap_out {
> -       uint64_t        block;
> +       __u64   block;
>  };
>
>  struct fuse_ioctl_in {
> -       uint64_t        fh;
> -       uint32_t        flags;
> -       uint32_t        cmd;
> -       uint64_t        arg;
> -       uint32_t        in_size;
> -       uint32_t        out_size;
> +       __u64   fh;
> +       __u32   flags;
> +       __u32   cmd;
> +       __u64   arg;
> +       __u32   in_size;
> +       __u32   out_size;
>  };
>
>  struct fuse_ioctl_iovec {
> -       uint64_t        base;
> -       uint64_t        len;
> +       __u64   base;
> +       __u64   len;
>  };
>
>  struct fuse_ioctl_out {
> -       int32_t         result;
> -       uint32_t        flags;
> -       uint32_t        in_iovs;
> -       uint32_t        out_iovs;
> +       __s32           result;
> +       __u32   flags;
> +       __u32   in_iovs;
> +       __u32   out_iovs;
>  };
>
>  struct fuse_poll_in {
> -       uint64_t        fh;
> -       uint64_t        kh;
> -       uint32_t        flags;
> -       uint32_t        events;
> +       __u64   fh;
> +       __u64   kh;
> +       __u32   flags;
> +       __u32   events;
>  };
>
>  struct fuse_poll_out {
> -       uint32_t        revents;
> -       uint32_t        padding;
> +       __u32   revents;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_poll_wakeup_out {
> -       uint64_t        kh;
> +       __u64   kh;
>  };
>
>  struct fuse_fallocate_in {
> -       uint64_t        fh;
> -       uint64_t        offset;
> -       uint64_t        length;
> -       uint32_t        mode;
> -       uint32_t        padding;
> +       __u64   fh;
> +       __u64   offset;
> +       __u64   length;
> +       __u32   mode;
> +       __u32   padding;
>  };
>
>  struct fuse_in_header {
> -       uint32_t        len;
> -       uint32_t        opcode;
> -       uint64_t        unique;
> -       uint64_t        nodeid;
> -       uint32_t        uid;
> -       uint32_t        gid;
> -       uint32_t        pid;
> -       uint32_t        padding;
> +       __u32   len;
> +       __u32   opcode;
> +       __u64   unique;
> +       __u64   nodeid;
> +       __u32   uid;
> +       __u32   gid;
> +       __u32   pid;
> +       __u32   padding;
>  };
>
>  struct fuse_out_header {
> -       uint32_t        len;
> -       int32_t         error;
> -       uint64_t        unique;
> +       __u32   len;
> +       __s32           error;
> +       __u64   unique;
>  };
>
>  struct fuse_dirent {
> -       uint64_t        ino;
> -       uint64_t        off;
> -       uint32_t        namelen;
> -       uint32_t        type;
> +       __u64   ino;
> +       __u64   off;
> +       __u32   namelen;
> +       __u32   type;
>         char name[];
>  };
>
>  #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
>  #define FUSE_DIRENT_ALIGN(x) \
> -       (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
> +       (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
>  #define FUSE_DIRENT_SIZE(d) \
>         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
>
> @@ -712,47 +708,47 @@ struct fuse_direntplus {
>         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
>
>  struct fuse_notify_inval_inode_out {
> -       uint64_t        ino;
> -       int64_t         off;
> -       int64_t         len;
> +       __u64   ino;
> +       __s64           off;
> +       __s64           len;
>  };
>
>  struct fuse_notify_inval_entry_out {
> -       uint64_t        parent;
> -       uint32_t        namelen;
> -       uint32_t        padding;
> +       __u64   parent;
> +       __u32   namelen;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_delete_out {
> -       uint64_t        parent;
> -       uint64_t        child;
> -       uint32_t        namelen;
> -       uint32_t        padding;
> +       __u64   parent;
> +       __u64   child;
> +       __u32   namelen;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_store_out {
> -       uint64_t        nodeid;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u64   nodeid;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  struct fuse_notify_retrieve_out {
> -       uint64_t        notify_unique;
> -       uint64_t        nodeid;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        padding;
> +       __u64   notify_unique;
> +       __u64   nodeid;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   padding;
>  };
>
>  /* Matches the size of fuse_write_in */
>  struct fuse_notify_retrieve_in {
> -       uint64_t        dummy1;
> -       uint64_t        offset;
> -       uint32_t        size;
> -       uint32_t        dummy2;
> -       uint64_t        dummy3;
> -       uint64_t        dummy4;
> +       __u64   dummy1;
> +       __u64   offset;
> +       __u32   size;
> +       __u32   dummy2;
> +       __u64   dummy3;
> +       __u64   dummy4;
>  };
>
>  /* Device ioctls: */
> --
> 2.5.0
>

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
  2015-10-15  5:55   ` Mikko Rapeli
  (?)
@ 2015-10-15 16:17     ` Gustavo Padovan
  -1 siblings, 0 replies; 206+ messages in thread
From: Gustavo Padovan @ 2015-10-15 16:17 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Inki Dae, Joonyoung Shim, Seung-Woo Kim,
	Kyungmin Park, David Airlie, Kukjin Kim, Krzysztof Kozlowski,
	dri-devel, linux-api, linux-arm-kernel, linux-samsung-soc

2015-10-15 Mikko Rapeli <mikko.rapeli@iki.fi>:

> Fixes userspace compilation error:
> 
> drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/exynos_drm.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

	Gustavo

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
@ 2015-10-15 16:17     ` Gustavo Padovan
  0 siblings, 0 replies; 206+ messages in thread
From: Gustavo Padovan @ 2015-10-15 16:17 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Krzysztof Kozlowski, linux-samsung-soc, linux-api, Seung-Woo Kim,
	linux-kernel, dri-devel, Kyungmin Park, Kukjin Kim,
	linux-arm-kernel

2015-10-15 Mikko Rapeli <mikko.rapeli@iki.fi>:

> Fixes userspace compilation error:
> 
> drm/exynos_drm.h:30:2: error: unknown type name ‘uint64_t’
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/exynos_drm.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

	Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH v4 05/79] exynos_drm.h: use __u64 from linux/types.h
@ 2015-10-15 16:17     ` Gustavo Padovan
  0 siblings, 0 replies; 206+ messages in thread
From: Gustavo Padovan @ 2015-10-15 16:17 UTC (permalink / raw)
  To: linux-arm-kernel

2015-10-15 Mikko Rapeli <mikko.rapeli@iki.fi>:

> Fixes userspace compilation error:
> 
> drm/exynos_drm.h:30:2: error: unknown type name ?uint64_t?
> 
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/exynos_drm.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

	Gustavo

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 17:41       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 17:41 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 05:20:24PM +0200, Miklos Szeredi wrote:
> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Kernel headers should not use stdint.h.
> 
> Including <linux/types.h> breaks compile of library on non-Linux
> archs.  Allowing this patch would mean having a different header in
> the fuse lib as the one in the kernel.  This is useless complexity and
> a source of bugs.  We've already been there, and much prefer the
> current state.

Hmm. Why should Linux uapi header care about non-Linux platforms?

If fuse lib already has an embedded copy of this header, why should
this change break anything fuse lib?

In my other patches I got review comments that kernel headers should not
use <stdint.h> and also Documentation/CodingStyle section 5 says:

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

-Mikko

> NAK.
> 
> Thanks,
> Miklos
> 
> 
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> >  include/uapi/linux/fuse.h | 440 +++++++++++++++++++++++-----------------------
> >  1 file changed, 218 insertions(+), 222 deletions(-)
> >
> > diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
> > index c9aca04..a25e329 100644
> > --- a/include/uapi/linux/fuse.h
> > +++ b/include/uapi/linux/fuse.h
> > @@ -107,11 +107,7 @@
> >  #ifndef _LINUX_FUSE_H
> >  #define _LINUX_FUSE_H
> >
> > -#ifdef __KERNEL__
> >  #include <linux/types.h>
> > -#else
> > -#include <stdint.h>
> > -#endif
> >
> >  /*
> >   * Version negotiation:
> > @@ -146,42 +142,42 @@
> >     userspace works under 64bit kernels */
> >
> >  struct fuse_attr {
> > -       uint64_t        ino;
> > -       uint64_t        size;
> > -       uint64_t        blocks;
> > -       uint64_t        atime;
> > -       uint64_t        mtime;
> > -       uint64_t        ctime;
> > -       uint32_t        atimensec;
> > -       uint32_t        mtimensec;
> > -       uint32_t        ctimensec;
> > -       uint32_t        mode;
> > -       uint32_t        nlink;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        rdev;
> > -       uint32_t        blksize;
> > -       uint32_t        padding;
> > +       __u64   ino;
> > +       __u64   size;
> > +       __u64   blocks;
> > +       __u64   atime;
> > +       __u64   mtime;
> > +       __u64   ctime;
> > +       __u32   atimensec;
> > +       __u32   mtimensec;
> > +       __u32   ctimensec;
> > +       __u32   mode;
> > +       __u32   nlink;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   rdev;
> > +       __u32   blksize;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_kstatfs {
> > -       uint64_t        blocks;
> > -       uint64_t        bfree;
> > -       uint64_t        bavail;
> > -       uint64_t        files;
> > -       uint64_t        ffree;
> > -       uint32_t        bsize;
> > -       uint32_t        namelen;
> > -       uint32_t        frsize;
> > -       uint32_t        padding;
> > -       uint32_t        spare[6];
> > +       __u64   blocks;
> > +       __u64   bfree;
> > +       __u64   bavail;
> > +       __u64   files;
> > +       __u64   ffree;
> > +       __u32   bsize;
> > +       __u32   namelen;
> > +       __u32   frsize;
> > +       __u32   padding;
> > +       __u32   spare[6];
> >  };
> >
> >  struct fuse_file_lock {
> > -       uint64_t        start;
> > -       uint64_t        end;
> > -       uint32_t        type;
> > -       uint32_t        pid; /* tgid */
> > +       __u64   start;
> > +       __u64   end;
> > +       __u32   type;
> > +       __u32   pid; /* tgid */
> >  };
> >
> >  /**
> > @@ -379,149 +375,149 @@ enum fuse_notify_code {
> >  #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
> >
> >  struct fuse_entry_out {
> > -       uint64_t        nodeid;         /* Inode ID */
> > -       uint64_t        generation;     /* Inode generation: nodeid:gen must
> > +       __u64   nodeid;         /* Inode ID */
> > +       __u64   generation;     /* Inode generation: nodeid:gen must
> >                                            be unique for the fs's lifetime */
> > -       uint64_t        entry_valid;    /* Cache timeout for the name */
> > -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> > -       uint32_t        entry_valid_nsec;
> > -       uint32_t        attr_valid_nsec;
> > +       __u64   entry_valid;    /* Cache timeout for the name */
> > +       __u64   attr_valid;     /* Cache timeout for the attributes */
> > +       __u32   entry_valid_nsec;
> > +       __u32   attr_valid_nsec;
> >         struct fuse_attr attr;
> >  };
> >
> >  struct fuse_forget_in {
> > -       uint64_t        nlookup;
> > +       __u64   nlookup;
> >  };
> >
> >  struct fuse_forget_one {
> > -       uint64_t        nodeid;
> > -       uint64_t        nlookup;
> > +       __u64   nodeid;
> > +       __u64   nlookup;
> >  };
> >
> >  struct fuse_batch_forget_in {
> > -       uint32_t        count;
> > -       uint32_t        dummy;
> > +       __u32   count;
> > +       __u32   dummy;
> >  };
> >
> >  struct fuse_getattr_in {
> > -       uint32_t        getattr_flags;
> > -       uint32_t        dummy;
> > -       uint64_t        fh;
> > +       __u32   getattr_flags;
> > +       __u32   dummy;
> > +       __u64   fh;
> >  };
> >
> >  #define FUSE_COMPAT_ATTR_OUT_SIZE 96
> >
> >  struct fuse_attr_out {
> > -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> > -       uint32_t        attr_valid_nsec;
> > -       uint32_t        dummy;
> > +       __u64   attr_valid;     /* Cache timeout for the attributes */
> > +       __u32   attr_valid_nsec;
> > +       __u32   dummy;
> >         struct fuse_attr attr;
> >  };
> >
> >  #define FUSE_COMPAT_MKNOD_IN_SIZE 8
> >
> >  struct fuse_mknod_in {
> > -       uint32_t        mode;
> > -       uint32_t        rdev;
> > -       uint32_t        umask;
> > -       uint32_t        padding;
> > +       __u32   mode;
> > +       __u32   rdev;
> > +       __u32   umask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_mkdir_in {
> > -       uint32_t        mode;
> > -       uint32_t        umask;
> > +       __u32   mode;
> > +       __u32   umask;
> >  };
> >
> >  struct fuse_rename_in {
> > -       uint64_t        newdir;
> > +       __u64   newdir;
> >  };
> >
> >  struct fuse_rename2_in {
> > -       uint64_t        newdir;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   newdir;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_link_in {
> > -       uint64_t        oldnodeid;
> > +       __u64   oldnodeid;
> >  };
> >
> >  struct fuse_setattr_in {
> > -       uint32_t        valid;
> > -       uint32_t        padding;
> > -       uint64_t        fh;
> > -       uint64_t        size;
> > -       uint64_t        lock_owner;
> > -       uint64_t        atime;
> > -       uint64_t        mtime;
> > -       uint64_t        ctime;
> > -       uint32_t        atimensec;
> > -       uint32_t        mtimensec;
> > -       uint32_t        ctimensec;
> > -       uint32_t        mode;
> > -       uint32_t        unused4;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        unused5;
> > +       __u32   valid;
> > +       __u32   padding;
> > +       __u64   fh;
> > +       __u64   size;
> > +       __u64   lock_owner;
> > +       __u64   atime;
> > +       __u64   mtime;
> > +       __u64   ctime;
> > +       __u32   atimensec;
> > +       __u32   mtimensec;
> > +       __u32   ctimensec;
> > +       __u32   mode;
> > +       __u32   unused4;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   unused5;
> >  };
> >
> >  struct fuse_open_in {
> > -       uint32_t        flags;
> > -       uint32_t        unused;
> > +       __u32   flags;
> > +       __u32   unused;
> >  };
> >
> >  struct fuse_create_in {
> > -       uint32_t        flags;
> > -       uint32_t        mode;
> > -       uint32_t        umask;
> > -       uint32_t        padding;
> > +       __u32   flags;
> > +       __u32   mode;
> > +       __u32   umask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_open_out {
> > -       uint64_t        fh;
> > -       uint32_t        open_flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u32   open_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_release_in {
> > -       uint64_t        fh;
> > -       uint32_t        flags;
> > -       uint32_t        release_flags;
> > -       uint64_t        lock_owner;
> > +       __u64   fh;
> > +       __u32   flags;
> > +       __u32   release_flags;
> > +       __u64   lock_owner;
> >  };
> >
> >  struct fuse_flush_in {
> > -       uint64_t        fh;
> > -       uint32_t        unused;
> > -       uint32_t        padding;
> > -       uint64_t        lock_owner;
> > +       __u64   fh;
> > +       __u32   unused;
> > +       __u32   padding;
> > +       __u64   lock_owner;
> >  };
> >
> >  struct fuse_read_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        read_flags;
> > -       uint64_t        lock_owner;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   read_flags;
> > +       __u64   lock_owner;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  #define FUSE_COMPAT_WRITE_IN_SIZE 24
> >
> >  struct fuse_write_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        write_flags;
> > -       uint64_t        lock_owner;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   write_flags;
> > +       __u64   lock_owner;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_write_out {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  #define FUSE_COMPAT_STATFS_SIZE 48
> > @@ -531,32 +527,32 @@ struct fuse_statfs_out {
> >  };
> >
> >  struct fuse_fsync_in {
> > -       uint64_t        fh;
> > -       uint32_t        fsync_flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u32   fsync_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_setxattr_in {
> > -       uint32_t        size;
> > -       uint32_t        flags;
> > +       __u32   size;
> > +       __u32   flags;
> >  };
> >
> >  struct fuse_getxattr_in {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_getxattr_out {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_lk_in {
> > -       uint64_t        fh;
> > -       uint64_t        owner;
> > +       __u64   fh;
> > +       __u64   owner;
> >         struct fuse_file_lock lk;
> > -       uint32_t        lk_flags;
> > -       uint32_t        padding;
> > +       __u32   lk_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_lk_out {
> > @@ -564,140 +560,140 @@ struct fuse_lk_out {
> >  };
> >
> >  struct fuse_access_in {
> > -       uint32_t        mask;
> > -       uint32_t        padding;
> > +       __u32   mask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_init_in {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        max_readahead;
> > -       uint32_t        flags;
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   max_readahead;
> > +       __u32   flags;
> >  };
> >
> >  #define FUSE_COMPAT_INIT_OUT_SIZE 8
> >  #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
> >
> >  struct fuse_init_out {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        max_readahead;
> > -       uint32_t        flags;
> > -       uint16_t        max_background;
> > -       uint16_t        congestion_threshold;
> > -       uint32_t        max_write;
> > -       uint32_t        time_gran;
> > -       uint32_t        unused[9];
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   max_readahead;
> > +       __u32   flags;
> > +       __u16   max_background;
> > +       __u16   congestion_threshold;
> > +       __u32   max_write;
> > +       __u32   time_gran;
> > +       __u32   unused[9];
> >  };
> >
> >  #define CUSE_INIT_INFO_MAX 4096
> >
> >  struct cuse_init_in {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        unused;
> > -       uint32_t        flags;
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   unused;
> > +       __u32   flags;
> >  };
> >
> >  struct cuse_init_out {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        unused;
> > -       uint32_t        flags;
> > -       uint32_t        max_read;
> > -       uint32_t        max_write;
> > -       uint32_t        dev_major;              /* chardev major */
> > -       uint32_t        dev_minor;              /* chardev minor */
> > -       uint32_t        spare[10];
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   unused;
> > +       __u32   flags;
> > +       __u32   max_read;
> > +       __u32   max_write;
> > +       __u32   dev_major;              /* chardev major */
> > +       __u32   dev_minor;              /* chardev minor */
> > +       __u32   spare[10];
> >  };
> >
> >  struct fuse_interrupt_in {
> > -       uint64_t        unique;
> > +       __u64   unique;
> >  };
> >
> >  struct fuse_bmap_in {
> > -       uint64_t        block;
> > -       uint32_t        blocksize;
> > -       uint32_t        padding;
> > +       __u64   block;
> > +       __u32   blocksize;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_bmap_out {
> > -       uint64_t        block;
> > +       __u64   block;
> >  };
> >
> >  struct fuse_ioctl_in {
> > -       uint64_t        fh;
> > -       uint32_t        flags;
> > -       uint32_t        cmd;
> > -       uint64_t        arg;
> > -       uint32_t        in_size;
> > -       uint32_t        out_size;
> > +       __u64   fh;
> > +       __u32   flags;
> > +       __u32   cmd;
> > +       __u64   arg;
> > +       __u32   in_size;
> > +       __u32   out_size;
> >  };
> >
> >  struct fuse_ioctl_iovec {
> > -       uint64_t        base;
> > -       uint64_t        len;
> > +       __u64   base;
> > +       __u64   len;
> >  };
> >
> >  struct fuse_ioctl_out {
> > -       int32_t         result;
> > -       uint32_t        flags;
> > -       uint32_t        in_iovs;
> > -       uint32_t        out_iovs;
> > +       __s32           result;
> > +       __u32   flags;
> > +       __u32   in_iovs;
> > +       __u32   out_iovs;
> >  };
> >
> >  struct fuse_poll_in {
> > -       uint64_t        fh;
> > -       uint64_t        kh;
> > -       uint32_t        flags;
> > -       uint32_t        events;
> > +       __u64   fh;
> > +       __u64   kh;
> > +       __u32   flags;
> > +       __u32   events;
> >  };
> >
> >  struct fuse_poll_out {
> > -       uint32_t        revents;
> > -       uint32_t        padding;
> > +       __u32   revents;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_poll_wakeup_out {
> > -       uint64_t        kh;
> > +       __u64   kh;
> >  };
> >
> >  struct fuse_fallocate_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint64_t        length;
> > -       uint32_t        mode;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u64   length;
> > +       __u32   mode;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_in_header {
> > -       uint32_t        len;
> > -       uint32_t        opcode;
> > -       uint64_t        unique;
> > -       uint64_t        nodeid;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        pid;
> > -       uint32_t        padding;
> > +       __u32   len;
> > +       __u32   opcode;
> > +       __u64   unique;
> > +       __u64   nodeid;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   pid;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_out_header {
> > -       uint32_t        len;
> > -       int32_t         error;
> > -       uint64_t        unique;
> > +       __u32   len;
> > +       __s32           error;
> > +       __u64   unique;
> >  };
> >
> >  struct fuse_dirent {
> > -       uint64_t        ino;
> > -       uint64_t        off;
> > -       uint32_t        namelen;
> > -       uint32_t        type;
> > +       __u64   ino;
> > +       __u64   off;
> > +       __u32   namelen;
> > +       __u32   type;
> >         char name[];
> >  };
> >
> >  #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
> >  #define FUSE_DIRENT_ALIGN(x) \
> > -       (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
> > +       (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
> >  #define FUSE_DIRENT_SIZE(d) \
> >         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
> >
> > @@ -712,47 +708,47 @@ struct fuse_direntplus {
> >         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
> >
> >  struct fuse_notify_inval_inode_out {
> > -       uint64_t        ino;
> > -       int64_t         off;
> > -       int64_t         len;
> > +       __u64   ino;
> > +       __s64           off;
> > +       __s64           len;
> >  };
> >
> >  struct fuse_notify_inval_entry_out {
> > -       uint64_t        parent;
> > -       uint32_t        namelen;
> > -       uint32_t        padding;
> > +       __u64   parent;
> > +       __u32   namelen;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_delete_out {
> > -       uint64_t        parent;
> > -       uint64_t        child;
> > -       uint32_t        namelen;
> > -       uint32_t        padding;
> > +       __u64   parent;
> > +       __u64   child;
> > +       __u32   namelen;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_store_out {
> > -       uint64_t        nodeid;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u64   nodeid;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_retrieve_out {
> > -       uint64_t        notify_unique;
> > -       uint64_t        nodeid;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u64   notify_unique;
> > +       __u64   nodeid;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  /* Matches the size of fuse_write_in */
> >  struct fuse_notify_retrieve_in {
> > -       uint64_t        dummy1;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        dummy2;
> > -       uint64_t        dummy3;
> > -       uint64_t        dummy4;
> > +       __u64   dummy1;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   dummy2;
> > +       __u64   dummy3;
> > +       __u64   dummy4;
> >  };
> >
> >  /* Device ioctls: */
> > --
> > 2.5.0
> >

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 17:41       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 17:41 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 05:20:24PM +0200, Miklos Szeredi wrote:
> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> > Kernel headers should not use stdint.h.
> 
> Including <linux/types.h> breaks compile of library on non-Linux
> archs.  Allowing this patch would mean having a different header in
> the fuse lib as the one in the kernel.  This is useless complexity and
> a source of bugs.  We've already been there, and much prefer the
> current state.

Hmm. Why should Linux uapi header care about non-Linux platforms?

If fuse lib already has an embedded copy of this header, why should
this change break anything fuse lib?

In my other patches I got review comments that kernel headers should not
use <stdint.h> and also Documentation/CodingStyle section 5 says:

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

-Mikko

> NAK.
> 
> Thanks,
> Miklos
> 
> 
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> > ---
> >  include/uapi/linux/fuse.h | 440 +++++++++++++++++++++++-----------------------
> >  1 file changed, 218 insertions(+), 222 deletions(-)
> >
> > diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
> > index c9aca04..a25e329 100644
> > --- a/include/uapi/linux/fuse.h
> > +++ b/include/uapi/linux/fuse.h
> > @@ -107,11 +107,7 @@
> >  #ifndef _LINUX_FUSE_H
> >  #define _LINUX_FUSE_H
> >
> > -#ifdef __KERNEL__
> >  #include <linux/types.h>
> > -#else
> > -#include <stdint.h>
> > -#endif
> >
> >  /*
> >   * Version negotiation:
> > @@ -146,42 +142,42 @@
> >     userspace works under 64bit kernels */
> >
> >  struct fuse_attr {
> > -       uint64_t        ino;
> > -       uint64_t        size;
> > -       uint64_t        blocks;
> > -       uint64_t        atime;
> > -       uint64_t        mtime;
> > -       uint64_t        ctime;
> > -       uint32_t        atimensec;
> > -       uint32_t        mtimensec;
> > -       uint32_t        ctimensec;
> > -       uint32_t        mode;
> > -       uint32_t        nlink;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        rdev;
> > -       uint32_t        blksize;
> > -       uint32_t        padding;
> > +       __u64   ino;
> > +       __u64   size;
> > +       __u64   blocks;
> > +       __u64   atime;
> > +       __u64   mtime;
> > +       __u64   ctime;
> > +       __u32   atimensec;
> > +       __u32   mtimensec;
> > +       __u32   ctimensec;
> > +       __u32   mode;
> > +       __u32   nlink;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   rdev;
> > +       __u32   blksize;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_kstatfs {
> > -       uint64_t        blocks;
> > -       uint64_t        bfree;
> > -       uint64_t        bavail;
> > -       uint64_t        files;
> > -       uint64_t        ffree;
> > -       uint32_t        bsize;
> > -       uint32_t        namelen;
> > -       uint32_t        frsize;
> > -       uint32_t        padding;
> > -       uint32_t        spare[6];
> > +       __u64   blocks;
> > +       __u64   bfree;
> > +       __u64   bavail;
> > +       __u64   files;
> > +       __u64   ffree;
> > +       __u32   bsize;
> > +       __u32   namelen;
> > +       __u32   frsize;
> > +       __u32   padding;
> > +       __u32   spare[6];
> >  };
> >
> >  struct fuse_file_lock {
> > -       uint64_t        start;
> > -       uint64_t        end;
> > -       uint32_t        type;
> > -       uint32_t        pid; /* tgid */
> > +       __u64   start;
> > +       __u64   end;
> > +       __u32   type;
> > +       __u32   pid; /* tgid */
> >  };
> >
> >  /**
> > @@ -379,149 +375,149 @@ enum fuse_notify_code {
> >  #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
> >
> >  struct fuse_entry_out {
> > -       uint64_t        nodeid;         /* Inode ID */
> > -       uint64_t        generation;     /* Inode generation: nodeid:gen must
> > +       __u64   nodeid;         /* Inode ID */
> > +       __u64   generation;     /* Inode generation: nodeid:gen must
> >                                            be unique for the fs's lifetime */
> > -       uint64_t        entry_valid;    /* Cache timeout for the name */
> > -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> > -       uint32_t        entry_valid_nsec;
> > -       uint32_t        attr_valid_nsec;
> > +       __u64   entry_valid;    /* Cache timeout for the name */
> > +       __u64   attr_valid;     /* Cache timeout for the attributes */
> > +       __u32   entry_valid_nsec;
> > +       __u32   attr_valid_nsec;
> >         struct fuse_attr attr;
> >  };
> >
> >  struct fuse_forget_in {
> > -       uint64_t        nlookup;
> > +       __u64   nlookup;
> >  };
> >
> >  struct fuse_forget_one {
> > -       uint64_t        nodeid;
> > -       uint64_t        nlookup;
> > +       __u64   nodeid;
> > +       __u64   nlookup;
> >  };
> >
> >  struct fuse_batch_forget_in {
> > -       uint32_t        count;
> > -       uint32_t        dummy;
> > +       __u32   count;
> > +       __u32   dummy;
> >  };
> >
> >  struct fuse_getattr_in {
> > -       uint32_t        getattr_flags;
> > -       uint32_t        dummy;
> > -       uint64_t        fh;
> > +       __u32   getattr_flags;
> > +       __u32   dummy;
> > +       __u64   fh;
> >  };
> >
> >  #define FUSE_COMPAT_ATTR_OUT_SIZE 96
> >
> >  struct fuse_attr_out {
> > -       uint64_t        attr_valid;     /* Cache timeout for the attributes */
> > -       uint32_t        attr_valid_nsec;
> > -       uint32_t        dummy;
> > +       __u64   attr_valid;     /* Cache timeout for the attributes */
> > +       __u32   attr_valid_nsec;
> > +       __u32   dummy;
> >         struct fuse_attr attr;
> >  };
> >
> >  #define FUSE_COMPAT_MKNOD_IN_SIZE 8
> >
> >  struct fuse_mknod_in {
> > -       uint32_t        mode;
> > -       uint32_t        rdev;
> > -       uint32_t        umask;
> > -       uint32_t        padding;
> > +       __u32   mode;
> > +       __u32   rdev;
> > +       __u32   umask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_mkdir_in {
> > -       uint32_t        mode;
> > -       uint32_t        umask;
> > +       __u32   mode;
> > +       __u32   umask;
> >  };
> >
> >  struct fuse_rename_in {
> > -       uint64_t        newdir;
> > +       __u64   newdir;
> >  };
> >
> >  struct fuse_rename2_in {
> > -       uint64_t        newdir;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   newdir;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_link_in {
> > -       uint64_t        oldnodeid;
> > +       __u64   oldnodeid;
> >  };
> >
> >  struct fuse_setattr_in {
> > -       uint32_t        valid;
> > -       uint32_t        padding;
> > -       uint64_t        fh;
> > -       uint64_t        size;
> > -       uint64_t        lock_owner;
> > -       uint64_t        atime;
> > -       uint64_t        mtime;
> > -       uint64_t        ctime;
> > -       uint32_t        atimensec;
> > -       uint32_t        mtimensec;
> > -       uint32_t        ctimensec;
> > -       uint32_t        mode;
> > -       uint32_t        unused4;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        unused5;
> > +       __u32   valid;
> > +       __u32   padding;
> > +       __u64   fh;
> > +       __u64   size;
> > +       __u64   lock_owner;
> > +       __u64   atime;
> > +       __u64   mtime;
> > +       __u64   ctime;
> > +       __u32   atimensec;
> > +       __u32   mtimensec;
> > +       __u32   ctimensec;
> > +       __u32   mode;
> > +       __u32   unused4;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   unused5;
> >  };
> >
> >  struct fuse_open_in {
> > -       uint32_t        flags;
> > -       uint32_t        unused;
> > +       __u32   flags;
> > +       __u32   unused;
> >  };
> >
> >  struct fuse_create_in {
> > -       uint32_t        flags;
> > -       uint32_t        mode;
> > -       uint32_t        umask;
> > -       uint32_t        padding;
> > +       __u32   flags;
> > +       __u32   mode;
> > +       __u32   umask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_open_out {
> > -       uint64_t        fh;
> > -       uint32_t        open_flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u32   open_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_release_in {
> > -       uint64_t        fh;
> > -       uint32_t        flags;
> > -       uint32_t        release_flags;
> > -       uint64_t        lock_owner;
> > +       __u64   fh;
> > +       __u32   flags;
> > +       __u32   release_flags;
> > +       __u64   lock_owner;
> >  };
> >
> >  struct fuse_flush_in {
> > -       uint64_t        fh;
> > -       uint32_t        unused;
> > -       uint32_t        padding;
> > -       uint64_t        lock_owner;
> > +       __u64   fh;
> > +       __u32   unused;
> > +       __u32   padding;
> > +       __u64   lock_owner;
> >  };
> >
> >  struct fuse_read_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        read_flags;
> > -       uint64_t        lock_owner;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   read_flags;
> > +       __u64   lock_owner;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  #define FUSE_COMPAT_WRITE_IN_SIZE 24
> >
> >  struct fuse_write_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        write_flags;
> > -       uint64_t        lock_owner;
> > -       uint32_t        flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   write_flags;
> > +       __u64   lock_owner;
> > +       __u32   flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_write_out {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  #define FUSE_COMPAT_STATFS_SIZE 48
> > @@ -531,32 +527,32 @@ struct fuse_statfs_out {
> >  };
> >
> >  struct fuse_fsync_in {
> > -       uint64_t        fh;
> > -       uint32_t        fsync_flags;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u32   fsync_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_setxattr_in {
> > -       uint32_t        size;
> > -       uint32_t        flags;
> > +       __u32   size;
> > +       __u32   flags;
> >  };
> >
> >  struct fuse_getxattr_in {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_getxattr_out {
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_lk_in {
> > -       uint64_t        fh;
> > -       uint64_t        owner;
> > +       __u64   fh;
> > +       __u64   owner;
> >         struct fuse_file_lock lk;
> > -       uint32_t        lk_flags;
> > -       uint32_t        padding;
> > +       __u32   lk_flags;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_lk_out {
> > @@ -564,140 +560,140 @@ struct fuse_lk_out {
> >  };
> >
> >  struct fuse_access_in {
> > -       uint32_t        mask;
> > -       uint32_t        padding;
> > +       __u32   mask;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_init_in {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        max_readahead;
> > -       uint32_t        flags;
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   max_readahead;
> > +       __u32   flags;
> >  };
> >
> >  #define FUSE_COMPAT_INIT_OUT_SIZE 8
> >  #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
> >
> >  struct fuse_init_out {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        max_readahead;
> > -       uint32_t        flags;
> > -       uint16_t        max_background;
> > -       uint16_t        congestion_threshold;
> > -       uint32_t        max_write;
> > -       uint32_t        time_gran;
> > -       uint32_t        unused[9];
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   max_readahead;
> > +       __u32   flags;
> > +       __u16   max_background;
> > +       __u16   congestion_threshold;
> > +       __u32   max_write;
> > +       __u32   time_gran;
> > +       __u32   unused[9];
> >  };
> >
> >  #define CUSE_INIT_INFO_MAX 4096
> >
> >  struct cuse_init_in {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        unused;
> > -       uint32_t        flags;
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   unused;
> > +       __u32   flags;
> >  };
> >
> >  struct cuse_init_out {
> > -       uint32_t        major;
> > -       uint32_t        minor;
> > -       uint32_t        unused;
> > -       uint32_t        flags;
> > -       uint32_t        max_read;
> > -       uint32_t        max_write;
> > -       uint32_t        dev_major;              /* chardev major */
> > -       uint32_t        dev_minor;              /* chardev minor */
> > -       uint32_t        spare[10];
> > +       __u32   major;
> > +       __u32   minor;
> > +       __u32   unused;
> > +       __u32   flags;
> > +       __u32   max_read;
> > +       __u32   max_write;
> > +       __u32   dev_major;              /* chardev major */
> > +       __u32   dev_minor;              /* chardev minor */
> > +       __u32   spare[10];
> >  };
> >
> >  struct fuse_interrupt_in {
> > -       uint64_t        unique;
> > +       __u64   unique;
> >  };
> >
> >  struct fuse_bmap_in {
> > -       uint64_t        block;
> > -       uint32_t        blocksize;
> > -       uint32_t        padding;
> > +       __u64   block;
> > +       __u32   blocksize;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_bmap_out {
> > -       uint64_t        block;
> > +       __u64   block;
> >  };
> >
> >  struct fuse_ioctl_in {
> > -       uint64_t        fh;
> > -       uint32_t        flags;
> > -       uint32_t        cmd;
> > -       uint64_t        arg;
> > -       uint32_t        in_size;
> > -       uint32_t        out_size;
> > +       __u64   fh;
> > +       __u32   flags;
> > +       __u32   cmd;
> > +       __u64   arg;
> > +       __u32   in_size;
> > +       __u32   out_size;
> >  };
> >
> >  struct fuse_ioctl_iovec {
> > -       uint64_t        base;
> > -       uint64_t        len;
> > +       __u64   base;
> > +       __u64   len;
> >  };
> >
> >  struct fuse_ioctl_out {
> > -       int32_t         result;
> > -       uint32_t        flags;
> > -       uint32_t        in_iovs;
> > -       uint32_t        out_iovs;
> > +       __s32           result;
> > +       __u32   flags;
> > +       __u32   in_iovs;
> > +       __u32   out_iovs;
> >  };
> >
> >  struct fuse_poll_in {
> > -       uint64_t        fh;
> > -       uint64_t        kh;
> > -       uint32_t        flags;
> > -       uint32_t        events;
> > +       __u64   fh;
> > +       __u64   kh;
> > +       __u32   flags;
> > +       __u32   events;
> >  };
> >
> >  struct fuse_poll_out {
> > -       uint32_t        revents;
> > -       uint32_t        padding;
> > +       __u32   revents;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_poll_wakeup_out {
> > -       uint64_t        kh;
> > +       __u64   kh;
> >  };
> >
> >  struct fuse_fallocate_in {
> > -       uint64_t        fh;
> > -       uint64_t        offset;
> > -       uint64_t        length;
> > -       uint32_t        mode;
> > -       uint32_t        padding;
> > +       __u64   fh;
> > +       __u64   offset;
> > +       __u64   length;
> > +       __u32   mode;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_in_header {
> > -       uint32_t        len;
> > -       uint32_t        opcode;
> > -       uint64_t        unique;
> > -       uint64_t        nodeid;
> > -       uint32_t        uid;
> > -       uint32_t        gid;
> > -       uint32_t        pid;
> > -       uint32_t        padding;
> > +       __u32   len;
> > +       __u32   opcode;
> > +       __u64   unique;
> > +       __u64   nodeid;
> > +       __u32   uid;
> > +       __u32   gid;
> > +       __u32   pid;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_out_header {
> > -       uint32_t        len;
> > -       int32_t         error;
> > -       uint64_t        unique;
> > +       __u32   len;
> > +       __s32           error;
> > +       __u64   unique;
> >  };
> >
> >  struct fuse_dirent {
> > -       uint64_t        ino;
> > -       uint64_t        off;
> > -       uint32_t        namelen;
> > -       uint32_t        type;
> > +       __u64   ino;
> > +       __u64   off;
> > +       __u32   namelen;
> > +       __u32   type;
> >         char name[];
> >  };
> >
> >  #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
> >  #define FUSE_DIRENT_ALIGN(x) \
> > -       (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
> > +       (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
> >  #define FUSE_DIRENT_SIZE(d) \
> >         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
> >
> > @@ -712,47 +708,47 @@ struct fuse_direntplus {
> >         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
> >
> >  struct fuse_notify_inval_inode_out {
> > -       uint64_t        ino;
> > -       int64_t         off;
> > -       int64_t         len;
> > +       __u64   ino;
> > +       __s64           off;
> > +       __s64           len;
> >  };
> >
> >  struct fuse_notify_inval_entry_out {
> > -       uint64_t        parent;
> > -       uint32_t        namelen;
> > -       uint32_t        padding;
> > +       __u64   parent;
> > +       __u32   namelen;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_delete_out {
> > -       uint64_t        parent;
> > -       uint64_t        child;
> > -       uint32_t        namelen;
> > -       uint32_t        padding;
> > +       __u64   parent;
> > +       __u64   child;
> > +       __u32   namelen;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_store_out {
> > -       uint64_t        nodeid;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u64   nodeid;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  struct fuse_notify_retrieve_out {
> > -       uint64_t        notify_unique;
> > -       uint64_t        nodeid;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        padding;
> > +       __u64   notify_unique;
> > +       __u64   nodeid;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   padding;
> >  };
> >
> >  /* Matches the size of fuse_write_in */
> >  struct fuse_notify_retrieve_in {
> > -       uint64_t        dummy1;
> > -       uint64_t        offset;
> > -       uint32_t        size;
> > -       uint32_t        dummy2;
> > -       uint64_t        dummy3;
> > -       uint64_t        dummy4;
> > +       __u64   dummy1;
> > +       __u64   offset;
> > +       __u32   size;
> > +       __u32   dummy2;
> > +       __u64   dummy3;
> > +       __u64   dummy4;
> >  };
> >
> >  /* Device ioctls: */
> > --
> > 2.5.0
> >

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
@ 2015-10-15 17:53       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 17:53 UTC (permalink / raw)
  To: Mike Snitzer; +Cc: linux-kernel, dm-devel, Alasdair Kergon, linux-api

Hi,

On Thu, Oct 15, 2015 at 04:09:50AM -0400, Mike Snitzer wrote:
> On Thu, Oct 15 2015 at  1:55am -0400,
> Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> 
> > Fixes userspace compilation errors like:
> > 
> > linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> 
> As was already explained before, there is no need to compile this for
> userspace consumption.  Where is this requirement coming from?

Sorry, maybe I did not understand this comment. Currently
include/uapi/linux/dm-log-userspace.h is in uapi headers and thus exported
to userspace and has this bug/feature which breaks a build.

Are you saying that it should not be exported to userspace at all and it
should be moved back to include/linux/dm-log.h?

I can prepare such a change instead.

> If your 0th patch's header speaks to _why_ you keep requesting this
> change then please cc me on it.

Sorry, I'm touching too many uapi headers with similar changes
so I can't Cc that many mailing lists and individuals with the cover
letter, but it is available here:

https://lkml.org/lkml/2015/10/15/22

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h
@ 2015-10-15 17:53       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 17:53 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Alasdair Kergon,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Hi,

On Thu, Oct 15, 2015 at 04:09:50AM -0400, Mike Snitzer wrote:
> On Thu, Oct 15 2015 at  1:55am -0400,
> Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> 
> > Fixes userspace compilation errors like:
> > 
> > linux/dm-log-userspace.h:416:2: error: unknown type name ‘uint64_t’
> > 
> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> 
> As was already explained before, there is no need to compile this for
> userspace consumption.  Where is this requirement coming from?

Sorry, maybe I did not understand this comment. Currently
include/uapi/linux/dm-log-userspace.h is in uapi headers and thus exported
to userspace and has this bug/feature which breaks a build.

Are you saying that it should not be exported to userspace at all and it
should be moved back to include/linux/dm-log.h?

I can prepare such a change instead.

> If your 0th patch's header speaks to _why_ you keep requesting this
> change then please cc me on it.

Sorry, I'm touching too many uapi headers with similar changes
so I can't Cc that many mailing lists and individuals with the cover
letter, but it is available here:

https://lkml.org/lkml/2015/10/15/22

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15 18:08       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 18:08 UTC (permalink / raw)
  To: Frans Klaver; +Cc: linux-kernel, linux-api

On Thu, Oct 15, 2015 at 10:49:17AM +0200, Frans Klaver wrote:
> Hi,
> 
> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > And include linux/hdlc/ioctl.h from linux/if.h.
> 
> That appears to have already been the case before this patch. You just
> add a comment behind the include statement.

True, fixed in a new version.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15 18:08       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 18:08 UTC (permalink / raw)
  To: Frans Klaver; +Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-api

On Thu, Oct 15, 2015 at 10:49:17AM +0200, Frans Klaver wrote:
> Hi,
> 
> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> > And include linux/hdlc/ioctl.h from linux/if.h.
> 
> That appears to have already been the case before this patch. You just
> add a comment behind the include statement.

True, fixed in a new version.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* [PATCH] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15 18:11         ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 18:11 UTC (permalink / raw)
  To: fransklaver; +Cc: mikko.rapeli, linux-kernel, linux-api

Fixes userspace compiler error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Suggested by Frans Klaver <fransklaver@gmail.com> on lkml message
<20150530195223.GA15645@bugger.home>.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 include/uapi/linux/hdlc/ioctl.h | 1 +
 include/uapi/linux/if.h         | 6 ++----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 04bc027..d1b1de5 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,6 +1,7 @@
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
 
+#define IFNAMSIZ        16
 
 #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
 
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index 9cf2394..0f98f0a 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -22,10 +22,8 @@
 #include <linux/types.h>		/* for "__kernel_caddr_t" et al	*/
 #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
 #include <linux/compiler.h>		/* for "__user" et al           */
-
-#define	IFNAMSIZ	16
-#define	IFALIASZ	256
-#include <linux/hdlc/ioctl.h>
+#include <linux/hdlc/ioctl.h>           /* for IFNAMSIZ                 */
+#define        IFALIASZ        256
 
 /**
  * enum net_device_flags - &struct net_device flags
-- 
2.6.1


^ permalink raw reply related	[flat|nested] 206+ messages in thread

* [PATCH] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h
@ 2015-10-15 18:11         ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 18:11 UTC (permalink / raw)
  To: fransklaver-Re5JQEeQqe8AvxtiuMwx3w
  Cc: mikko.rapeli-X3B1VOXEql0, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-api-u79uwXL29TY76Z2rM5mHXA

Fixes userspace compiler error:

error: ‘IFNAMSIZ’ undeclared here (not in a function)

Suggested by Frans Klaver <fransklaver-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> on lkml message
<20150530195223.GA15645-LuJdRk73L+f/9pzu0YdTqQ@public.gmane.org>.

Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
---
 include/uapi/linux/hdlc/ioctl.h | 1 +
 include/uapi/linux/if.h         | 6 ++----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/include/uapi/linux/hdlc/ioctl.h b/include/uapi/linux/hdlc/ioctl.h
index 04bc027..d1b1de5 100644
--- a/include/uapi/linux/hdlc/ioctl.h
+++ b/include/uapi/linux/hdlc/ioctl.h
@@ -1,6 +1,7 @@
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
 
+#define IFNAMSIZ        16
 
 #define GENERIC_HDLC_VERSION 4	/* For synchronization with sethdlc utility */
 
diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index 9cf2394..0f98f0a 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -22,10 +22,8 @@
 #include <linux/types.h>		/* for "__kernel_caddr_t" et al	*/
 #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
 #include <linux/compiler.h>		/* for "__user" et al           */
-
-#define	IFNAMSIZ	16
-#define	IFALIASZ	256
-#include <linux/hdlc/ioctl.h>
+#include <linux/hdlc/ioctl.h>           /* for IFNAMSIZ                 */
+#define        IFALIASZ        256
 
 /**
  * enum net_device_flags - &struct net_device flags
-- 
2.6.1

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 18:32         ` Miklos Szeredi
  0 siblings, 0 replies; 206+ messages in thread
From: Miklos Szeredi @ 2015-10-15 18:32 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 7:41 PM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> On Thu, Oct 15, 2015 at 05:20:24PM +0200, Miklos Szeredi wrote:
>> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> > Kernel headers should not use stdint.h.
>>
>> Including <linux/types.h> breaks compile of library on non-Linux
>> archs.  Allowing this patch would mean having a different header in
>> the fuse lib as the one in the kernel.  This is useless complexity and
>> a source of bugs.  We've already been there, and much prefer the
>> current state.
>
> Hmm. Why should Linux uapi header care about non-Linux platforms?
>
> If fuse lib already has an embedded copy of this header, why should
> this change break anything fuse lib?

It has a copy, but that copy is often updated with new features taken
from the kernel.  There's no reason to have two different versions of
the header file for no good reason.

> In my other patches I got review comments that kernel headers should not
> use <stdint.h> and also Documentation/CodingStyle section 5 says:
>
>  (e) Types safe for use in userspace.
>
>      In certain structures which are visible to userspace, we cannot
>      require C99 types and cannot use the 'u32' form above. Thus, we
>      use __u32 and similar types in all structures which are shared
>      with userspace.

Ok, if you cannot require C99, then the __uXX types are the way to go.
But for the fuse API we *can* use C99 types, nothing preventing us
from doing it.

Thanks,
Miklos

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 18:32         ` Miklos Szeredi
  0 siblings, 0 replies; 206+ messages in thread
From: Miklos Szeredi @ 2015-10-15 18:32 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 7:41 PM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> On Thu, Oct 15, 2015 at 05:20:24PM +0200, Miklos Szeredi wrote:
>> On Thu, Oct 15, 2015 at 7:56 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
>> > Kernel headers should not use stdint.h.
>>
>> Including <linux/types.h> breaks compile of library on non-Linux
>> archs.  Allowing this patch would mean having a different header in
>> the fuse lib as the one in the kernel.  This is useless complexity and
>> a source of bugs.  We've already been there, and much prefer the
>> current state.
>
> Hmm. Why should Linux uapi header care about non-Linux platforms?
>
> If fuse lib already has an embedded copy of this header, why should
> this change break anything fuse lib?

It has a copy, but that copy is often updated with new features taken
from the kernel.  There's no reason to have two different versions of
the header file for no good reason.

> In my other patches I got review comments that kernel headers should not
> use <stdint.h> and also Documentation/CodingStyle section 5 says:
>
>  (e) Types safe for use in userspace.
>
>      In certain structures which are visible to userspace, we cannot
>      require C99 types and cannot use the 'u32' form above. Thus, we
>      use __u32 and similar types in all structures which are shared
>      with userspace.

Ok, if you cannot require C99, then the __uXX types are the way to go.
But for the fuse API we *can* use C99 types, nothing preventing us
from doing it.

Thanks,
Miklos

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 18:59           ` Arnd Bergmann
  0 siblings, 0 replies; 206+ messages in thread
From: Arnd Bergmann @ 2015-10-15 18:59 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Mikko Rapeli, Kernel Mailing List, fuse-devel, Linux API

On Thursday 15 October 2015 20:32:45 Miklos Szeredi wrote:
> > In my other patches I got review comments that kernel headers should not
> > use <stdint.h> and also Documentation/CodingStyle section 5 says:
> >
> >  (e) Types safe for use in userspace.
> >
> >      In certain structures which are visible to userspace, we cannot
> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >      use __u32 and similar types in all structures which are shared
> >      with userspace.
> 
> Ok, if you cannot require C99, then the __uXX types are the way to go.
> But for the fuse API we *can* use C99 types, nothing preventing us
> from doing it.

What the sentence above means is that you should not rely on the
user including <stdint.h> before including a kernel header, and
that kernel headers are not allowed to include <stdint.h> themselves,
because that would break any pre-C99 user space that defines types
with the same names in their own headers and that relies on that
header not to be included implicitly.

It's possible that it has never been a problem for the fuse headers,
but it has been a problem for other headers in the past and what
Mikko is trying to achieve is to ensure that none of the kernel
headers do this so we can make it an error in 'make headers_install'.

	Arnd

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 18:59           ` Arnd Bergmann
  0 siblings, 0 replies; 206+ messages in thread
From: Arnd Bergmann @ 2015-10-15 18:59 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Mikko Rapeli, Kernel Mailing List, fuse-devel, Linux API

On Thursday 15 October 2015 20:32:45 Miklos Szeredi wrote:
> > In my other patches I got review comments that kernel headers should not
> > use <stdint.h> and also Documentation/CodingStyle section 5 says:
> >
> >  (e) Types safe for use in userspace.
> >
> >      In certain structures which are visible to userspace, we cannot
> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >      use __u32 and similar types in all structures which are shared
> >      with userspace.
> 
> Ok, if you cannot require C99, then the __uXX types are the way to go.
> But for the fuse API we *can* use C99 types, nothing preventing us
> from doing it.

What the sentence above means is that you should not rely on the
user including <stdint.h> before including a kernel header, and
that kernel headers are not allowed to include <stdint.h> themselves,
because that would break any pre-C99 user space that defines types
with the same names in their own headers and that relies on that
header not to be included implicitly.

It's possible that it has never been a problem for the fuse headers,
but it has been a problem for other headers in the past and what
Mikko is trying to achieve is to ensure that none of the kernel
headers do this so we can make it an error in 'make headers_install'.

	Arnd

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
  2015-10-15 18:59           ` Arnd Bergmann
  (?)
@ 2015-10-15 19:25           ` Miklos Szeredi
  2015-10-15 21:03               ` Mikko Rapeli
  -1 siblings, 1 reply; 206+ messages in thread
From: Miklos Szeredi @ 2015-10-15 19:25 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Mikko Rapeli, Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 8:59 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Thursday 15 October 2015 20:32:45 Miklos Szeredi wrote:
>> > In my other patches I got review comments that kernel headers should not
>> > use <stdint.h> and also Documentation/CodingStyle section 5 says:
>> >
>> >  (e) Types safe for use in userspace.
>> >
>> >      In certain structures which are visible to userspace, we cannot
>> >      require C99 types and cannot use the 'u32' form above. Thus, we
>> >      use __u32 and similar types in all structures which are shared
>> >      with userspace.
>>
>> Ok, if you cannot require C99, then the __uXX types are the way to go.
>> But for the fuse API we *can* use C99 types, nothing preventing us
>> from doing it.
>
> What the sentence above means is that you should not rely on the
> user including <stdint.h> before including a kernel header, and
> that kernel headers are not allowed to include <stdint.h> themselves,
> because that would break any pre-C99 user space that defines types
> with the same names in their own headers and that relies on that
> header not to be included implicitly.
>
> It's possible that it has never been a problem for the fuse headers,
> but it has been a problem for other headers in the past and what
> Mikko is trying to achieve is to ensure that none of the kernel
> headers do this so we can make it an error in 'make headers_install'.

"in some cases including <stdint.h> might be a problem" is not a very
strong argument in favour of making it an error.  And since it would
be a step backwards for the fuse header I object to making it an
error.

If this is really such a big issue, then why not make it a warning
(and add a mechanism to silence that warning)?

Thanks,
Miklos

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 21:03               ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 21:03 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Arnd Bergmann, Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 09:25:30PM +0200, Miklos Szeredi wrote:
> On Thu, Oct 15, 2015 at 8:59 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Thursday 15 October 2015 20:32:45 Miklos Szeredi wrote:
> >> > In my other patches I got review comments that kernel headers should not
> >> > use <stdint.h> and also Documentation/CodingStyle section 5 says:
> >> >
> >> >  (e) Types safe for use in userspace.
> >> >
> >> >      In certain structures which are visible to userspace, we cannot
> >> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >> >      use __u32 and similar types in all structures which are shared
> >> >      with userspace.
> >>
> >> Ok, if you cannot require C99, then the __uXX types are the way to go.
> >> But for the fuse API we *can* use C99 types, nothing preventing us
> >> from doing it.
> >
> > What the sentence above means is that you should not rely on the
> > user including <stdint.h> before including a kernel header, and
> > that kernel headers are not allowed to include <stdint.h> themselves,
> > because that would break any pre-C99 user space that defines types
> > with the same names in their own headers and that relies on that
> > header not to be included implicitly.
> >
> > It's possible that it has never been a problem for the fuse headers,
> > but it has been a problem for other headers in the past and what
> > Mikko is trying to achieve is to ensure that none of the kernel
> > headers do this so we can make it an error in 'make headers_install'.
> 
> "in some cases including <stdint.h> might be a problem" is not a very
> strong argument in favour of making it an error.  And since it would
> be a step backwards for the fuse header I object to making it an
> error.
> 
> If this is really such a big issue, then why not make it a warning
> (and add a mechanism to silence that warning)?

I tried compiling fuse userspace library with this patch applied and
it compiles without any problems:

$ make
Making all in include
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/include'
make  all-am
make[2]: Entering directory '/home/mcfrisk/src/fuse-fuse/include'
make[2]: Leaving directory '/home/mcfrisk/src/fuse-fuse/include'
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/include'
Making all in lib
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/lib'
  CC       fuse.lo
  CC       fuse_loop_mt.lo
  CC       fuse_lowlevel.lo
  CC       cuse_lowlevel.lo
  CCLD     libfuse3.la
ar: `u' modifier ignored since `D' is the default (see `U')
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/lib'
Making all in util
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/util'
make  all-am
make[2]: Entering directory '/home/mcfrisk/src/fuse-fuse/util'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/mcfrisk/src/fuse-fuse/util'
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/util'
Making all in example
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/example'
  CCLD     fusexmp
  CCLD     fusexmp_fh
  CCLD     null
  CCLD     hello
  CCLD     hello_ll
  CCLD     fioc
  CCLD     fsel
  CCLD     cusexmp
  CCLD     fuse_lo-plus
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/example'
Making all in doc
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/doc'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/doc'
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse'

$ git diff
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index c9aca04..a25e329 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -107,11 +107,7 @@
 #ifndef _LINUX_FUSE_H
 #define _LINUX_FUSE_H
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /*
  * Version negotiation:
@@ -146,42 +142,42 @@
    userspace works under 64bit kernels */
 
 struct fuse_attr {
-	uint64_t	ino;
-	uint64_t	size;
-	uint64_t	blocks;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	nlink;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	rdev;
-	uint32_t	blksize;
-	uint32_t	padding;
+	__u64	ino;
+	__u64	size;
+	__u64	blocks;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	nlink;
+	__u32	uid;
+	__u32	gid;
+	__u32	rdev;
+	__u32	blksize;
+	__u32	padding;
 };
 
 struct fuse_kstatfs {
-	uint64_t	blocks;
-	uint64_t	bfree;
-	uint64_t	bavail;
-	uint64_t	files;
-	uint64_t	ffree;
-	uint32_t	bsize;
-	uint32_t	namelen;
-	uint32_t	frsize;
-	uint32_t	padding;
-	uint32_t	spare[6];
+	__u64	blocks;
+	__u64	bfree;
+	__u64	bavail;
+	__u64	files;
+	__u64	ffree;
+	__u32	bsize;
+	__u32	namelen;
+	__u32	frsize;
+	__u32	padding;
+	__u32	spare[6];
 };
 
 struct fuse_file_lock {
-	uint64_t	start;
-	uint64_t	end;
-	uint32_t	type;
-	uint32_t	pid; /* tgid */
+	__u64	start;
+	__u64	end;
+	__u32	type;
+	__u32	pid; /* tgid */
 };
 
 /**
@@ -379,149 +375,149 @@ enum fuse_notify_code {
 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
 
 struct fuse_entry_out {
-	uint64_t	nodeid;		/* Inode ID */
-	uint64_t	generation;	/* Inode generation: nodeid:gen must
+	__u64	nodeid;		/* Inode ID */
+	__u64	generation;	/* Inode generation: nodeid:gen must
 					   be unique for the fs's lifetime */
-	uint64_t	entry_valid;	/* Cache timeout for the name */
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	entry_valid_nsec;
-	uint32_t	attr_valid_nsec;
+	__u64	entry_valid;	/* Cache timeout for the name */
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	entry_valid_nsec;
+	__u32	attr_valid_nsec;
 	struct fuse_attr attr;
 };
 
 struct fuse_forget_in {
-	uint64_t	nlookup;
+	__u64	nlookup;
 };
 
 struct fuse_forget_one {
-	uint64_t	nodeid;
-	uint64_t	nlookup;
+	__u64	nodeid;
+	__u64	nlookup;
 };
 
 struct fuse_batch_forget_in {
-	uint32_t	count;
-	uint32_t	dummy;
+	__u32	count;
+	__u32	dummy;
 };
 
 struct fuse_getattr_in {
-	uint32_t	getattr_flags;
-	uint32_t	dummy;
-	uint64_t	fh;
+	__u32	getattr_flags;
+	__u32	dummy;
+	__u64	fh;
 };
 
 #define FUSE_COMPAT_ATTR_OUT_SIZE 96
 
 struct fuse_attr_out {
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	attr_valid_nsec;
-	uint32_t	dummy;
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	attr_valid_nsec;
+	__u32	dummy;
 	struct fuse_attr attr;
 };
 
 #define FUSE_COMPAT_MKNOD_IN_SIZE 8
 
 struct fuse_mknod_in {
-	uint32_t	mode;
-	uint32_t	rdev;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	mode;
+	__u32	rdev;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_mkdir_in {
-	uint32_t	mode;
-	uint32_t	umask;
+	__u32	mode;
+	__u32	umask;
 };
 
 struct fuse_rename_in {
-	uint64_t	newdir;
+	__u64	newdir;
 };
 
 struct fuse_rename2_in {
-	uint64_t	newdir;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	newdir;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_link_in {
-	uint64_t	oldnodeid;
+	__u64	oldnodeid;
 };
 
 struct fuse_setattr_in {
-	uint32_t	valid;
-	uint32_t	padding;
-	uint64_t	fh;
-	uint64_t	size;
-	uint64_t	lock_owner;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	unused4;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	unused5;
+	__u32	valid;
+	__u32	padding;
+	__u64	fh;
+	__u64	size;
+	__u64	lock_owner;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	unused4;
+	__u32	uid;
+	__u32	gid;
+	__u32	unused5;
 };
 
 struct fuse_open_in {
-	uint32_t	flags;
-	uint32_t	unused;
+	__u32	flags;
+	__u32	unused;
 };
 
 struct fuse_create_in {
-	uint32_t	flags;
-	uint32_t	mode;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	flags;
+	__u32	mode;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_open_out {
-	uint64_t	fh;
-	uint32_t	open_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	open_flags;
+	__u32	padding;
 };
 
 struct fuse_release_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	release_flags;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	flags;
+	__u32	release_flags;
+	__u64	lock_owner;
 };
 
 struct fuse_flush_in {
-	uint64_t	fh;
-	uint32_t	unused;
-	uint32_t	padding;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	unused;
+	__u32	padding;
+	__u64	lock_owner;
 };
 
 struct fuse_read_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	read_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	read_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_WRITE_IN_SIZE 24
 
 struct fuse_write_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	write_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	write_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_write_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_STATFS_SIZE 48
@@ -531,32 +527,32 @@ struct fuse_statfs_out {
 };
 
 struct fuse_fsync_in {
-	uint64_t	fh;
-	uint32_t	fsync_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	fsync_flags;
+	__u32	padding;
 };
 
 struct fuse_setxattr_in {
-	uint32_t	size;
-	uint32_t	flags;
+	__u32	size;
+	__u32	flags;
 };
 
 struct fuse_getxattr_in {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_getxattr_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_lk_in {
-	uint64_t	fh;
-	uint64_t	owner;
+	__u64	fh;
+	__u64	owner;
 	struct fuse_file_lock lk;
-	uint32_t	lk_flags;
-	uint32_t	padding;
+	__u32	lk_flags;
+	__u32	padding;
 };
 
 struct fuse_lk_out {
@@ -564,140 +560,140 @@ struct fuse_lk_out {
 };
 
 struct fuse_access_in {
-	uint32_t	mask;
-	uint32_t	padding;
+	__u32	mask;
+	__u32	padding;
 };
 
 struct fuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
 };
 
 #define FUSE_COMPAT_INIT_OUT_SIZE 8
 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
 
 struct fuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
-	uint16_t	max_background;
-	uint16_t	congestion_threshold;
-	uint32_t	max_write;
-	uint32_t	time_gran;
-	uint32_t	unused[9];
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
+	__u16	max_background;
+	__u16	congestion_threshold;
+	__u32	max_write;
+	__u32	time_gran;
+	__u32	unused[9];
 };
 
 #define CUSE_INIT_INFO_MAX 4096
 
 struct cuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
 };
 
 struct cuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
-	uint32_t	max_read;
-	uint32_t	max_write;
-	uint32_t	dev_major;		/* chardev major */
-	uint32_t	dev_minor;		/* chardev minor */
-	uint32_t	spare[10];
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
+	__u32	max_read;
+	__u32	max_write;
+	__u32	dev_major;		/* chardev major */
+	__u32	dev_minor;		/* chardev minor */
+	__u32	spare[10];
 };
 
 struct fuse_interrupt_in {
-	uint64_t	unique;
+	__u64	unique;
 };
 
 struct fuse_bmap_in {
-	uint64_t	block;
-	uint32_t	blocksize;
-	uint32_t	padding;
+	__u64	block;
+	__u32	blocksize;
+	__u32	padding;
 };
 
 struct fuse_bmap_out {
-	uint64_t	block;
+	__u64	block;
 };
 
 struct fuse_ioctl_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	cmd;
-	uint64_t	arg;
-	uint32_t	in_size;
-	uint32_t	out_size;
+	__u64	fh;
+	__u32	flags;
+	__u32	cmd;
+	__u64	arg;
+	__u32	in_size;
+	__u32	out_size;
 };
 
 struct fuse_ioctl_iovec {
-	uint64_t	base;
-	uint64_t	len;
+	__u64	base;
+	__u64	len;
 };
 
 struct fuse_ioctl_out {
-	int32_t		result;
-	uint32_t	flags;
-	uint32_t	in_iovs;
-	uint32_t	out_iovs;
+	__s32		result;
+	__u32	flags;
+	__u32	in_iovs;
+	__u32	out_iovs;
 };
 
 struct fuse_poll_in {
-	uint64_t	fh;
-	uint64_t	kh;
-	uint32_t	flags;
-	uint32_t	events;
+	__u64	fh;
+	__u64	kh;
+	__u32	flags;
+	__u32	events;
 };
 
 struct fuse_poll_out {
-	uint32_t	revents;
-	uint32_t	padding;
+	__u32	revents;
+	__u32	padding;
 };
 
 struct fuse_notify_poll_wakeup_out {
-	uint64_t	kh;
+	__u64	kh;
 };
 
 struct fuse_fallocate_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint64_t	length;
-	uint32_t	mode;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u64	length;
+	__u32	mode;
+	__u32	padding;
 };
 
 struct fuse_in_header {
-	uint32_t	len;
-	uint32_t	opcode;
-	uint64_t	unique;
-	uint64_t	nodeid;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	pid;
-	uint32_t	padding;
+	__u32	len;
+	__u32	opcode;
+	__u64	unique;
+	__u64	nodeid;
+	__u32	uid;
+	__u32	gid;
+	__u32	pid;
+	__u32	padding;
 };
 
 struct fuse_out_header {
-	uint32_t	len;
-	int32_t		error;
-	uint64_t	unique;
+	__u32	len;
+	__s32		error;
+	__u64	unique;
 };
 
 struct fuse_dirent {
-	uint64_t	ino;
-	uint64_t	off;
-	uint32_t	namelen;
-	uint32_t	type;
+	__u64	ino;
+	__u64	off;
+	__u32	namelen;
+	__u32	type;
 	char name[];
 };
 
 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
 #define FUSE_DIRENT_ALIGN(x) \
-	(((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+	(((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
 #define FUSE_DIRENT_SIZE(d) \
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
 
@@ -712,47 +708,47 @@ struct fuse_direntplus {
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
 
 struct fuse_notify_inval_inode_out {
-	uint64_t	ino;
-	int64_t		off;
-	int64_t		len;
+	__u64	ino;
+	__s64		off;
+	__s64		len;
 };
 
 struct fuse_notify_inval_entry_out {
-	uint64_t	parent;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_delete_out {
-	uint64_t	parent;
-	uint64_t	child;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u64	child;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_store_out {
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_notify_retrieve_out {
-	uint64_t	notify_unique;
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	notify_unique;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 /* Matches the size of fuse_write_in */
 struct fuse_notify_retrieve_in {
-	uint64_t	dummy1;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	dummy2;
-	uint64_t	dummy3;
-	uint64_t	dummy4;
+	__u64	dummy1;
+	__u64	offset;
+	__u32	size;
+	__u32	dummy2;
+	__u64	dummy3;
+	__u64	dummy4;
 };
 
 /* Device ioctls: */

-Mikko

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace
@ 2015-10-15 21:03               ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 21:03 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: Arnd Bergmann, Kernel Mailing List, fuse-devel, Linux API

On Thu, Oct 15, 2015 at 09:25:30PM +0200, Miklos Szeredi wrote:
> On Thu, Oct 15, 2015 at 8:59 PM, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> wrote:
> > On Thursday 15 October 2015 20:32:45 Miklos Szeredi wrote:
> >> > In my other patches I got review comments that kernel headers should not
> >> > use <stdint.h> and also Documentation/CodingStyle section 5 says:
> >> >
> >> >  (e) Types safe for use in userspace.
> >> >
> >> >      In certain structures which are visible to userspace, we cannot
> >> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >> >      use __u32 and similar types in all structures which are shared
> >> >      with userspace.
> >>
> >> Ok, if you cannot require C99, then the __uXX types are the way to go.
> >> But for the fuse API we *can* use C99 types, nothing preventing us
> >> from doing it.
> >
> > What the sentence above means is that you should not rely on the
> > user including <stdint.h> before including a kernel header, and
> > that kernel headers are not allowed to include <stdint.h> themselves,
> > because that would break any pre-C99 user space that defines types
> > with the same names in their own headers and that relies on that
> > header not to be included implicitly.
> >
> > It's possible that it has never been a problem for the fuse headers,
> > but it has been a problem for other headers in the past and what
> > Mikko is trying to achieve is to ensure that none of the kernel
> > headers do this so we can make it an error in 'make headers_install'.
> 
> "in some cases including <stdint.h> might be a problem" is not a very
> strong argument in favour of making it an error.  And since it would
> be a step backwards for the fuse header I object to making it an
> error.
> 
> If this is really such a big issue, then why not make it a warning
> (and add a mechanism to silence that warning)?

I tried compiling fuse userspace library with this patch applied and
it compiles without any problems:

$ make
Making all in include
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/include'
make  all-am
make[2]: Entering directory '/home/mcfrisk/src/fuse-fuse/include'
make[2]: Leaving directory '/home/mcfrisk/src/fuse-fuse/include'
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/include'
Making all in lib
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/lib'
  CC       fuse.lo
  CC       fuse_loop_mt.lo
  CC       fuse_lowlevel.lo
  CC       cuse_lowlevel.lo
  CCLD     libfuse3.la
ar: `u' modifier ignored since `D' is the default (see `U')
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/lib'
Making all in util
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/util'
make  all-am
make[2]: Entering directory '/home/mcfrisk/src/fuse-fuse/util'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/mcfrisk/src/fuse-fuse/util'
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/util'
Making all in example
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/example'
  CCLD     fusexmp
  CCLD     fusexmp_fh
  CCLD     null
  CCLD     hello
  CCLD     hello_ll
  CCLD     fioc
  CCLD     fsel
  CCLD     cusexmp
  CCLD     fuse_lo-plus
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/example'
Making all in doc
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse/doc'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse/doc'
make[1]: Entering directory '/home/mcfrisk/src/fuse-fuse'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/mcfrisk/src/fuse-fuse'

$ git diff
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index c9aca04..a25e329 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -107,11 +107,7 @@
 #ifndef _LINUX_FUSE_H
 #define _LINUX_FUSE_H
 
-#ifdef __KERNEL__
 #include <linux/types.h>
-#else
-#include <stdint.h>
-#endif
 
 /*
  * Version negotiation:
@@ -146,42 +142,42 @@
    userspace works under 64bit kernels */
 
 struct fuse_attr {
-	uint64_t	ino;
-	uint64_t	size;
-	uint64_t	blocks;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	nlink;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	rdev;
-	uint32_t	blksize;
-	uint32_t	padding;
+	__u64	ino;
+	__u64	size;
+	__u64	blocks;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	nlink;
+	__u32	uid;
+	__u32	gid;
+	__u32	rdev;
+	__u32	blksize;
+	__u32	padding;
 };
 
 struct fuse_kstatfs {
-	uint64_t	blocks;
-	uint64_t	bfree;
-	uint64_t	bavail;
-	uint64_t	files;
-	uint64_t	ffree;
-	uint32_t	bsize;
-	uint32_t	namelen;
-	uint32_t	frsize;
-	uint32_t	padding;
-	uint32_t	spare[6];
+	__u64	blocks;
+	__u64	bfree;
+	__u64	bavail;
+	__u64	files;
+	__u64	ffree;
+	__u32	bsize;
+	__u32	namelen;
+	__u32	frsize;
+	__u32	padding;
+	__u32	spare[6];
 };
 
 struct fuse_file_lock {
-	uint64_t	start;
-	uint64_t	end;
-	uint32_t	type;
-	uint32_t	pid; /* tgid */
+	__u64	start;
+	__u64	end;
+	__u32	type;
+	__u32	pid; /* tgid */
 };
 
 /**
@@ -379,149 +375,149 @@ enum fuse_notify_code {
 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120
 
 struct fuse_entry_out {
-	uint64_t	nodeid;		/* Inode ID */
-	uint64_t	generation;	/* Inode generation: nodeid:gen must
+	__u64	nodeid;		/* Inode ID */
+	__u64	generation;	/* Inode generation: nodeid:gen must
 					   be unique for the fs's lifetime */
-	uint64_t	entry_valid;	/* Cache timeout for the name */
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	entry_valid_nsec;
-	uint32_t	attr_valid_nsec;
+	__u64	entry_valid;	/* Cache timeout for the name */
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	entry_valid_nsec;
+	__u32	attr_valid_nsec;
 	struct fuse_attr attr;
 };
 
 struct fuse_forget_in {
-	uint64_t	nlookup;
+	__u64	nlookup;
 };
 
 struct fuse_forget_one {
-	uint64_t	nodeid;
-	uint64_t	nlookup;
+	__u64	nodeid;
+	__u64	nlookup;
 };
 
 struct fuse_batch_forget_in {
-	uint32_t	count;
-	uint32_t	dummy;
+	__u32	count;
+	__u32	dummy;
 };
 
 struct fuse_getattr_in {
-	uint32_t	getattr_flags;
-	uint32_t	dummy;
-	uint64_t	fh;
+	__u32	getattr_flags;
+	__u32	dummy;
+	__u64	fh;
 };
 
 #define FUSE_COMPAT_ATTR_OUT_SIZE 96
 
 struct fuse_attr_out {
-	uint64_t	attr_valid;	/* Cache timeout for the attributes */
-	uint32_t	attr_valid_nsec;
-	uint32_t	dummy;
+	__u64	attr_valid;	/* Cache timeout for the attributes */
+	__u32	attr_valid_nsec;
+	__u32	dummy;
 	struct fuse_attr attr;
 };
 
 #define FUSE_COMPAT_MKNOD_IN_SIZE 8
 
 struct fuse_mknod_in {
-	uint32_t	mode;
-	uint32_t	rdev;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	mode;
+	__u32	rdev;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_mkdir_in {
-	uint32_t	mode;
-	uint32_t	umask;
+	__u32	mode;
+	__u32	umask;
 };
 
 struct fuse_rename_in {
-	uint64_t	newdir;
+	__u64	newdir;
 };
 
 struct fuse_rename2_in {
-	uint64_t	newdir;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	newdir;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_link_in {
-	uint64_t	oldnodeid;
+	__u64	oldnodeid;
 };
 
 struct fuse_setattr_in {
-	uint32_t	valid;
-	uint32_t	padding;
-	uint64_t	fh;
-	uint64_t	size;
-	uint64_t	lock_owner;
-	uint64_t	atime;
-	uint64_t	mtime;
-	uint64_t	ctime;
-	uint32_t	atimensec;
-	uint32_t	mtimensec;
-	uint32_t	ctimensec;
-	uint32_t	mode;
-	uint32_t	unused4;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	unused5;
+	__u32	valid;
+	__u32	padding;
+	__u64	fh;
+	__u64	size;
+	__u64	lock_owner;
+	__u64	atime;
+	__u64	mtime;
+	__u64	ctime;
+	__u32	atimensec;
+	__u32	mtimensec;
+	__u32	ctimensec;
+	__u32	mode;
+	__u32	unused4;
+	__u32	uid;
+	__u32	gid;
+	__u32	unused5;
 };
 
 struct fuse_open_in {
-	uint32_t	flags;
-	uint32_t	unused;
+	__u32	flags;
+	__u32	unused;
 };
 
 struct fuse_create_in {
-	uint32_t	flags;
-	uint32_t	mode;
-	uint32_t	umask;
-	uint32_t	padding;
+	__u32	flags;
+	__u32	mode;
+	__u32	umask;
+	__u32	padding;
 };
 
 struct fuse_open_out {
-	uint64_t	fh;
-	uint32_t	open_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	open_flags;
+	__u32	padding;
 };
 
 struct fuse_release_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	release_flags;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	flags;
+	__u32	release_flags;
+	__u64	lock_owner;
 };
 
 struct fuse_flush_in {
-	uint64_t	fh;
-	uint32_t	unused;
-	uint32_t	padding;
-	uint64_t	lock_owner;
+	__u64	fh;
+	__u32	unused;
+	__u32	padding;
+	__u64	lock_owner;
 };
 
 struct fuse_read_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	read_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	read_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_WRITE_IN_SIZE 24
 
 struct fuse_write_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	write_flags;
-	uint64_t	lock_owner;
-	uint32_t	flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u32	size;
+	__u32	write_flags;
+	__u64	lock_owner;
+	__u32	flags;
+	__u32	padding;
 };
 
 struct fuse_write_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 #define FUSE_COMPAT_STATFS_SIZE 48
@@ -531,32 +527,32 @@ struct fuse_statfs_out {
 };
 
 struct fuse_fsync_in {
-	uint64_t	fh;
-	uint32_t	fsync_flags;
-	uint32_t	padding;
+	__u64	fh;
+	__u32	fsync_flags;
+	__u32	padding;
 };
 
 struct fuse_setxattr_in {
-	uint32_t	size;
-	uint32_t	flags;
+	__u32	size;
+	__u32	flags;
 };
 
 struct fuse_getxattr_in {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_getxattr_out {
-	uint32_t	size;
-	uint32_t	padding;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_lk_in {
-	uint64_t	fh;
-	uint64_t	owner;
+	__u64	fh;
+	__u64	owner;
 	struct fuse_file_lock lk;
-	uint32_t	lk_flags;
-	uint32_t	padding;
+	__u32	lk_flags;
+	__u32	padding;
 };
 
 struct fuse_lk_out {
@@ -564,140 +560,140 @@ struct fuse_lk_out {
 };
 
 struct fuse_access_in {
-	uint32_t	mask;
-	uint32_t	padding;
+	__u32	mask;
+	__u32	padding;
 };
 
 struct fuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
 };
 
 #define FUSE_COMPAT_INIT_OUT_SIZE 8
 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24
 
 struct fuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	max_readahead;
-	uint32_t	flags;
-	uint16_t	max_background;
-	uint16_t	congestion_threshold;
-	uint32_t	max_write;
-	uint32_t	time_gran;
-	uint32_t	unused[9];
+	__u32	major;
+	__u32	minor;
+	__u32	max_readahead;
+	__u32	flags;
+	__u16	max_background;
+	__u16	congestion_threshold;
+	__u32	max_write;
+	__u32	time_gran;
+	__u32	unused[9];
 };
 
 #define CUSE_INIT_INFO_MAX 4096
 
 struct cuse_init_in {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
 };
 
 struct cuse_init_out {
-	uint32_t	major;
-	uint32_t	minor;
-	uint32_t	unused;
-	uint32_t	flags;
-	uint32_t	max_read;
-	uint32_t	max_write;
-	uint32_t	dev_major;		/* chardev major */
-	uint32_t	dev_minor;		/* chardev minor */
-	uint32_t	spare[10];
+	__u32	major;
+	__u32	minor;
+	__u32	unused;
+	__u32	flags;
+	__u32	max_read;
+	__u32	max_write;
+	__u32	dev_major;		/* chardev major */
+	__u32	dev_minor;		/* chardev minor */
+	__u32	spare[10];
 };
 
 struct fuse_interrupt_in {
-	uint64_t	unique;
+	__u64	unique;
 };
 
 struct fuse_bmap_in {
-	uint64_t	block;
-	uint32_t	blocksize;
-	uint32_t	padding;
+	__u64	block;
+	__u32	blocksize;
+	__u32	padding;
 };
 
 struct fuse_bmap_out {
-	uint64_t	block;
+	__u64	block;
 };
 
 struct fuse_ioctl_in {
-	uint64_t	fh;
-	uint32_t	flags;
-	uint32_t	cmd;
-	uint64_t	arg;
-	uint32_t	in_size;
-	uint32_t	out_size;
+	__u64	fh;
+	__u32	flags;
+	__u32	cmd;
+	__u64	arg;
+	__u32	in_size;
+	__u32	out_size;
 };
 
 struct fuse_ioctl_iovec {
-	uint64_t	base;
-	uint64_t	len;
+	__u64	base;
+	__u64	len;
 };
 
 struct fuse_ioctl_out {
-	int32_t		result;
-	uint32_t	flags;
-	uint32_t	in_iovs;
-	uint32_t	out_iovs;
+	__s32		result;
+	__u32	flags;
+	__u32	in_iovs;
+	__u32	out_iovs;
 };
 
 struct fuse_poll_in {
-	uint64_t	fh;
-	uint64_t	kh;
-	uint32_t	flags;
-	uint32_t	events;
+	__u64	fh;
+	__u64	kh;
+	__u32	flags;
+	__u32	events;
 };
 
 struct fuse_poll_out {
-	uint32_t	revents;
-	uint32_t	padding;
+	__u32	revents;
+	__u32	padding;
 };
 
 struct fuse_notify_poll_wakeup_out {
-	uint64_t	kh;
+	__u64	kh;
 };
 
 struct fuse_fallocate_in {
-	uint64_t	fh;
-	uint64_t	offset;
-	uint64_t	length;
-	uint32_t	mode;
-	uint32_t	padding;
+	__u64	fh;
+	__u64	offset;
+	__u64	length;
+	__u32	mode;
+	__u32	padding;
 };
 
 struct fuse_in_header {
-	uint32_t	len;
-	uint32_t	opcode;
-	uint64_t	unique;
-	uint64_t	nodeid;
-	uint32_t	uid;
-	uint32_t	gid;
-	uint32_t	pid;
-	uint32_t	padding;
+	__u32	len;
+	__u32	opcode;
+	__u64	unique;
+	__u64	nodeid;
+	__u32	uid;
+	__u32	gid;
+	__u32	pid;
+	__u32	padding;
 };
 
 struct fuse_out_header {
-	uint32_t	len;
-	int32_t		error;
-	uint64_t	unique;
+	__u32	len;
+	__s32		error;
+	__u64	unique;
 };
 
 struct fuse_dirent {
-	uint64_t	ino;
-	uint64_t	off;
-	uint32_t	namelen;
-	uint32_t	type;
+	__u64	ino;
+	__u64	off;
+	__u32	namelen;
+	__u32	type;
 	char name[];
 };
 
 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
 #define FUSE_DIRENT_ALIGN(x) \
-	(((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+	(((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
 #define FUSE_DIRENT_SIZE(d) \
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
 
@@ -712,47 +708,47 @@ struct fuse_direntplus {
 	FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
 
 struct fuse_notify_inval_inode_out {
-	uint64_t	ino;
-	int64_t		off;
-	int64_t		len;
+	__u64	ino;
+	__s64		off;
+	__s64		len;
 };
 
 struct fuse_notify_inval_entry_out {
-	uint64_t	parent;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_delete_out {
-	uint64_t	parent;
-	uint64_t	child;
-	uint32_t	namelen;
-	uint32_t	padding;
+	__u64	parent;
+	__u64	child;
+	__u32	namelen;
+	__u32	padding;
 };
 
 struct fuse_notify_store_out {
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 struct fuse_notify_retrieve_out {
-	uint64_t	notify_unique;
-	uint64_t	nodeid;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	padding;
+	__u64	notify_unique;
+	__u64	nodeid;
+	__u64	offset;
+	__u32	size;
+	__u32	padding;
 };
 
 /* Matches the size of fuse_write_in */
 struct fuse_notify_retrieve_in {
-	uint64_t	dummy1;
-	uint64_t	offset;
-	uint32_t	size;
-	uint32_t	dummy2;
-	uint64_t	dummy3;
-	uint64_t	dummy4;
+	__u64	dummy1;
+	__u64	offset;
+	__u32	size;
+	__u32	dummy2;
+	__u64	dummy3;
+	__u64	dummy4;
 };
 
 /* Device ioctls: */

-Mikko

^ permalink raw reply related	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 22:00       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 22:00 UTC (permalink / raw)
  To: Sowmini Varadhan; +Cc: linux-kernel, David S. Miller, linux-api

On Thu, Oct 15, 2015 at 07:06:14AM -0400, Sowmini Varadhan wrote:
> On (10/15/15 07:56), Mikko Rapeli wrote:
> > Date: Thu, 15 Oct 2015 07:56:01 +0200
> > From: Mikko Rapeli <mikko.rapeli@iki.fi>
> > To: linux-kernel@vger.kernel.org
> > Cc: mikko.rapeli@iki.fi, "David S. Miller" <davem@davemloft.net>, Sowmini
> >  Varadhan <sowmini.varadhan@oracle.com>, linux-api@vger.kernel.org
> > Subject: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64
> >  from linux/types.h
> > X-Mailer: git-send-email 2.6.1
> > 
> > Fixes userspace compilation errors like:
> > 
> > linux/rds.h:96:2: error: unknown type name ‘uint8_t’
> 
> Can't you just include <stdint.h> in linux/rds.h? (similar to the
> fix for linux/rds)? It would reduce the deltas significantly, 
> and portable applications are likely to expect uint8_t etc anyway.

What kind of portability should exported userspace headers from Linux kernel
need?

Reviews to my previous changes NACKed <stdint.h> usage and
Documentation/CodingStyle chapter 5 says:

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 22:00       ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 22:00 UTC (permalink / raw)
  To: Sowmini Varadhan
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, David S. Miller,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 07:06:14AM -0400, Sowmini Varadhan wrote:
> On (10/15/15 07:56), Mikko Rapeli wrote:
> > Date: Thu, 15 Oct 2015 07:56:01 +0200
> > From: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> > To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > Cc: mikko.rapeli-X3B1VOXEql0@public.gmane.org, "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>, Sowmini
> >  Varadhan <sowmini.varadhan-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > Subject: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64
> >  from linux/types.h
> > X-Mailer: git-send-email 2.6.1
> > 
> > Fixes userspace compilation errors like:
> > 
> > linux/rds.h:96:2: error: unknown type name ‘uint8_t’
> 
> Can't you just include <stdint.h> in linux/rds.h? (similar to the
> fix for linux/rds)? It would reduce the deltas significantly, 
> and portable applications are likely to expect uint8_t etc anyway.

What kind of portability should exported userspace headers from Linux kernel
need?

Reviews to my previous changes NACKed <stdint.h> usage and
Documentation/CodingStyle chapter 5 says:

 (e) Types safe for use in userspace.

     In certain structures which are visible to userspace, we cannot
     require C99 types and cannot use the 'u32' form above. Thus, we
     use __u32 and similar types in all structures which are shared
     with userspace.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
  2015-10-15 22:00       ` Mikko Rapeli
  (?)
@ 2015-10-15 22:21       ` Sowmini Varadhan
  2015-10-15 22:39           ` Mikko Rapeli
  -1 siblings, 1 reply; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 22:21 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, David S. Miller, linux-api

On (10/16/15 01:00), Mikko Rapeli wrote:
> 
> What kind of portability should exported userspace headers from Linux kernel
> need?
> 
> Reviews to my previous changes NACKed <stdint.h> usage and
> Documentation/CodingStyle chapter 5 says:
> 
>  (e) Types safe for use in userspace.
> 
>      In certain structures which are visible to userspace, we cannot
>      require C99 types and cannot use the 'u32' form above. Thus, we
>      use __u32 and similar types in all structures which are shared
>      with userspace.

Let's be clear: we are not talking about u32 vs __u32, we are talking
about uint32_t vs __u32 in your patch. 

I dont have the context of your "previous changes NACKed.." etc.
Why can we not require C99 types in rds.h?

Why isnt that a problem for, say, <netinet/in.h> which includes
<stdint.h>?

--Sowmini

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 22:39           ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 22:39 UTC (permalink / raw)
  To: Sowmini Varadhan; +Cc: linux-kernel, David S. Miller, linux-api

On Thu, Oct 15, 2015 at 06:21:05PM -0400, Sowmini Varadhan wrote:
> On (10/16/15 01:00), Mikko Rapeli wrote:
> > 
> > What kind of portability should exported userspace headers from Linux kernel
> > need?
> > 
> > Reviews to my previous changes NACKed <stdint.h> usage and
> > Documentation/CodingStyle chapter 5 says:
> > 
> >  (e) Types safe for use in userspace.
> > 
> >      In certain structures which are visible to userspace, we cannot
> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >      use __u32 and similar types in all structures which are shared
> >      with userspace.
> 
> Let's be clear: we are not talking about u32 vs __u32, we are talking
> about uint32_t vs __u32 in your patch. 
> 
> I dont have the context of your "previous changes NACKed.." etc.
> Why can we not require C99 types in rds.h?

Links to all previous reviews are here:
https://lkml.org/lkml/2015/10/15/22

"uint32_t vs __u32" nail is:
https://lkml.org/lkml/2015/6/1/160

> Why isnt that a problem for, say, <netinet/in.h> which includes
> <stdint.h>?

<netinet/in.h> isn't from Linux kernel, it comes from libc.
<linux/in.h> is from Linux kernel and that does not include <stdint.h>.

But this brough <linux/libc-compat.h> to my attention so thanks for that.
Maybe the <time.h> vs. <linux/time.h> conflict could be resolved with it.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 22:39           ` Mikko Rapeli
  0 siblings, 0 replies; 206+ messages in thread
From: Mikko Rapeli @ 2015-10-15 22:39 UTC (permalink / raw)
  To: Sowmini Varadhan
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, David S. Miller,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On Thu, Oct 15, 2015 at 06:21:05PM -0400, Sowmini Varadhan wrote:
> On (10/16/15 01:00), Mikko Rapeli wrote:
> > 
> > What kind of portability should exported userspace headers from Linux kernel
> > need?
> > 
> > Reviews to my previous changes NACKed <stdint.h> usage and
> > Documentation/CodingStyle chapter 5 says:
> > 
> >  (e) Types safe for use in userspace.
> > 
> >      In certain structures which are visible to userspace, we cannot
> >      require C99 types and cannot use the 'u32' form above. Thus, we
> >      use __u32 and similar types in all structures which are shared
> >      with userspace.
> 
> Let's be clear: we are not talking about u32 vs __u32, we are talking
> about uint32_t vs __u32 in your patch. 
> 
> I dont have the context of your "previous changes NACKed.." etc.
> Why can we not require C99 types in rds.h?

Links to all previous reviews are here:
https://lkml.org/lkml/2015/10/15/22

"uint32_t vs __u32" nail is:
https://lkml.org/lkml/2015/6/1/160

> Why isnt that a problem for, say, <netinet/in.h> which includes
> <stdint.h>?

<netinet/in.h> isn't from Linux kernel, it comes from libc.
<linux/in.h> is from Linux kernel and that does not include <stdint.h>.

But this brough <linux/libc-compat.h> to my attention so thanks for that.
Maybe the <time.h> vs. <linux/time.h> conflict could be resolved with it.

-Mikko

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 23:03             ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 23:03 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: linux-kernel, David S. Miller, linux-api

On (10/16/15 01:39), Mikko Rapeli wrote:
> "uint32_t vs __u32" nail is:
> https://lkml.org/lkml/2015/6/1/160

shrug. BTW, doesn't having the exported rds.h use __foo everywhere
actually end up with the result that "the kernel use the same names
as user space"

--Sowmini


^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 23/79] rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h
@ 2015-10-15 23:03             ` Sowmini Varadhan
  0 siblings, 0 replies; 206+ messages in thread
From: Sowmini Varadhan @ 2015-10-15 23:03 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, David S. Miller,
	linux-api-u79uwXL29TY76Z2rM5mHXA

On (10/16/15 01:39), Mikko Rapeli wrote:
> "uint32_t vs __u32" nail is:
> https://lkml.org/lkml/2015/6/1/160

shrug. BTW, doesn't having the exported rds.h use __foo everywhere
actually end up with the result that "the kernel use the same names
as user space"

--Sowmini

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
  2015-10-15  5:55 ` [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h Mikko Rapeli
@ 2015-10-21 14:36     ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 14:36 UTC (permalink / raw)
  To: Mikko Rapeli, Daniel Vetter
  Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, open list:ABI/API

On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes userspace compile error since list_head is not exported to userspace
> headers.
>
> Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> https://lkml.org/lkml/2015/6/3/792
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
We're safe as the only users of the struct already include via_drv.h.

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Daniel can you pick this up (esp. since you added it with commit
c828e20456301b0f5192a1f75e8bf8a6afd15551)

Thanks
Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
@ 2015-10-21 14:36     ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 14:36 UTC (permalink / raw)
  To: Mikko Rapeli, Daniel Vetter
  Cc: open list:ABI/API, Linux-Kernel@Vger. Kernel. Org, ML dri-devel

On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes userspace compile error since list_head is not exported to userspace
> headers.
>
> Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> https://lkml.org/lkml/2015/6/3/792
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
We're safe as the only users of the struct already include via_drv.h.

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Daniel can you pick this up (esp. since you added it with commit
c828e20456301b0f5192a1f75e8bf8a6afd15551)

Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h
  2015-10-15  5:55 ` [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h Mikko Rapeli
@ 2015-10-21 14:39   ` Emil Velikov
  2015-10-21 15:34       ` Daniel Vetter
  0 siblings, 1 reply; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 14:39 UTC (permalink / raw)
  To: Mikko Rapeli, Daniel Vetter
  Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, open list:ABI/API

On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes userspace compile error:
>
> drm/sis_drm.h:68:19: error: field ‘obj_list’ has incomplete type
>   struct list_head obj_list;
>
> Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> https://lkml.org/lkml/2015/6/3/792
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
Analogous to the via patch. Daniel can you please pick this one as well ?

Hunk was added with commit fdc0b8a63c1124bb025a2846d41531a123845740

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Thanks
Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h
  2015-10-15  5:55 ` [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h Mikko Rapeli
@ 2015-10-21 15:01     ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 15:01 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Linux-Kernel@Vger. Kernel. Org, ML dri-devel, open list:ABI/API

On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes compiler error:
>
> drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/via_drm.h | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
> index 8b0533c..d19c0e2 100644
> --- a/include/uapi/drm/via_drm.h
> +++ b/include/uapi/drm/via_drm.h
> @@ -33,9 +33,6 @@
>  #ifndef _VIA_DEFINES_
>  #define _VIA_DEFINES_
>
> -#ifndef __KERNEL__
> -#include "via_drmclient.h"
> -#endif
>
Now this one is messy. If we remove it, existing userspace [0] won't
be able to build. As they don't include the above header where needed,
but instead rely on via_drm.h. Despite the fact that each user
provides its own copy of via_drmclient.h.
There is some very old hardware/software involved so I'm not sure how
much of a real issue this patch will be. If the maintainers decide to
pick it up, let me know and I'll roll a fix for the ddx.

-Emil

[0] There are two users afaict - the via dri mesa module and
xf86-video-via. With the former nuked some 5 years ago with mesa
commit e4344161bde2e24fcfba65d30d58f087bd8bf94d

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h
@ 2015-10-21 15:01     ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 15:01 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: open list:ABI/API, Linux-Kernel@Vger. Kernel. Org, ML dri-devel

On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> Fixes compiler error:
>
> drm/via_drm.h:36:27: fatal error: via_drmclient.h: No such file or directory
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> ---
>  include/uapi/drm/via_drm.h | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h
> index 8b0533c..d19c0e2 100644
> --- a/include/uapi/drm/via_drm.h
> +++ b/include/uapi/drm/via_drm.h
> @@ -33,9 +33,6 @@
>  #ifndef _VIA_DEFINES_
>  #define _VIA_DEFINES_
>
> -#ifndef __KERNEL__
> -#include "via_drmclient.h"
> -#endif
>
Now this one is messy. If we remove it, existing userspace [0] won't
be able to build. As they don't include the above header where needed,
but instead rely on via_drm.h. Despite the fact that each user
provides its own copy of via_drmclient.h.
There is some very old hardware/software involved so I'm not sure how
much of a real issue this patch will be. If the maintainers decide to
pick it up, let me know and I'll roll a fix for the ddx.

-Emil

[0] There are two users afaict - the via dri mesa module and
xf86-video-via. With the former nuked some 5 years ago with mesa
commit e4344161bde2e24fcfba65d30d58f087bd8bf94d
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 15:09         ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 15:09 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Alex Deucher, open list:ABI/API, LKML, Maling list - DRI developers

Hi Alex,

On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> > Fixes userspace compilation error:
>> >
>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>> >
>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>
>> NACK on all these type conversions.  This has not been a problem for
>> years and years and the result looks terrible.
>
> Documentation/CodingStyle, section 5
>
>  (e) Types safe for use in userspace.
>
>      In certain structures which are visible to userspace, we cannot
>      require C99 types and cannot use the 'u32' form above. Thus, we
>      use __u32 and similar types in all structures which are shared
>      with userspace.
>
> I have only been looking at kernel headers from userspace occationally in
> the past 10 years and had a several cases where the provided headers did
> not compile when included into trivial programs trying to use the structs
> for an ioctl() for example. This long lasting problem triggered me to write
> a test for this and provide these fixes too. In previous reviews usage
> of <stdint.h> and its types in kernel headers was already NACK'ed
> so I changed several places from uint32_t's to __u32.
>
> With these changes it is btw trivial now to add a grep test the there
> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
> rule.
>
Based of the reply from Mikko, can you please elaborate your concern ?
Are you thinking about some corner case where this may cause breakage,
or it's solely on stylistic point of view ?

Over the last few years we've been doing some ad-hoc 'synchronisation'
with the headers in libdrm, and this will get us one step closer to
doing things properly.

Fwiw I fully support these changes, as does Gustavo for exynos and Rob for msm.
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Thanks
Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 15:09         ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 15:09 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: Alex Deucher, open list:ABI/API, LKML, Maling list - DRI developers

Hi Alex,

On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
>> > Fixes userspace compilation error:
>> >
>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>> >
>> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
>>
>> NACK on all these type conversions.  This has not been a problem for
>> years and years and the result looks terrible.
>
> Documentation/CodingStyle, section 5
>
>  (e) Types safe for use in userspace.
>
>      In certain structures which are visible to userspace, we cannot
>      require C99 types and cannot use the 'u32' form above. Thus, we
>      use __u32 and similar types in all structures which are shared
>      with userspace.
>
> I have only been looking at kernel headers from userspace occationally in
> the past 10 years and had a several cases where the provided headers did
> not compile when included into trivial programs trying to use the structs
> for an ioctl() for example. This long lasting problem triggered me to write
> a test for this and provide these fixes too. In previous reviews usage
> of <stdint.h> and its types in kernel headers was already NACK'ed
> so I changed several places from uint32_t's to __u32.
>
> With these changes it is btw trivial now to add a grep test the there
> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
> rule.
>
Based of the reply from Mikko, can you please elaborate your concern ?
Are you thinking about some corner case where this may cause breakage,
or it's solely on stylistic point of view ?

Over the last few years we've been doing some ad-hoc 'synchronisation'
with the headers in libdrm, and this will get us one step closer to
doing things properly.

Fwiw I fully support these changes, as does Gustavo for exynos and Rob for msm.
Reviewed-by: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Thanks
Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-10-21 15:09         ` Emil Velikov
@ 2015-10-21 15:18           ` Alex Deucher
  -1 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-21 15:18 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, open list:ABI/API, LKML, Maling list - DRI developers

On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> Hi Alex,
>
> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>> > Fixes userspace compilation error:
>>> >
>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>> >
>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>
>>> NACK on all these type conversions.  This has not been a problem for
>>> years and years and the result looks terrible.
>>
>> Documentation/CodingStyle, section 5
>>
>>  (e) Types safe for use in userspace.
>>
>>      In certain structures which are visible to userspace, we cannot
>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>      use __u32 and similar types in all structures which are shared
>>      with userspace.
>>
>> I have only been looking at kernel headers from userspace occationally in
>> the past 10 years and had a several cases where the provided headers did
>> not compile when included into trivial programs trying to use the structs
>> for an ioctl() for example. This long lasting problem triggered me to write
>> a test for this and provide these fixes too. In previous reviews usage
>> of <stdint.h> and its types in kernel headers was already NACK'ed
>> so I changed several places from uint32_t's to __u32.
>>
>> With these changes it is btw trivial now to add a grep test the there
>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>> rule.
>>
> Based of the reply from Mikko, can you please elaborate your concern ?
> Are you thinking about some corner case where this may cause breakage,
> or it's solely on stylistic point of view ?

Style.

>
> Over the last few years we've been doing some ad-hoc 'synchronisation'
> with the headers in libdrm, and this will get us one step closer to
> doing things properly.

How does this affect libdrm one way or another?

Alex

>
> Fwiw I fully support these changes, as does Gustavo for exynos and Rob for msm.
> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
>
> Thanks
> Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 15:18           ` Alex Deucher
  0 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-21 15:18 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, LKML, Maling list - DRI developers, open list:ABI/API

On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> Hi Alex,
>
> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>> > Fixes userspace compilation error:
>>> >
>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>> >
>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>
>>> NACK on all these type conversions.  This has not been a problem for
>>> years and years and the result looks terrible.
>>
>> Documentation/CodingStyle, section 5
>>
>>  (e) Types safe for use in userspace.
>>
>>      In certain structures which are visible to userspace, we cannot
>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>      use __u32 and similar types in all structures which are shared
>>      with userspace.
>>
>> I have only been looking at kernel headers from userspace occationally in
>> the past 10 years and had a several cases where the provided headers did
>> not compile when included into trivial programs trying to use the structs
>> for an ioctl() for example. This long lasting problem triggered me to write
>> a test for this and provide these fixes too. In previous reviews usage
>> of <stdint.h> and its types in kernel headers was already NACK'ed
>> so I changed several places from uint32_t's to __u32.
>>
>> With these changes it is btw trivial now to add a grep test the there
>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>> rule.
>>
> Based of the reply from Mikko, can you please elaborate your concern ?
> Are you thinking about some corner case where this may cause breakage,
> or it's solely on stylistic point of view ?

Style.

>
> Over the last few years we've been doing some ad-hoc 'synchronisation'
> with the headers in libdrm, and this will get us one step closer to
> doing things properly.

How does this affect libdrm one way or another?

Alex

>
> Fwiw I fully support these changes, as does Gustavo for exynos and Rob for msm.
> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
>
> Thanks
> Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
@ 2015-10-21 15:33       ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-21 15:33 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, Daniel Vetter, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, open list:ABI/API

On Wed, Oct 21, 2015 at 03:36:22PM +0100, Emil Velikov wrote:
> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compile error since list_head is not exported to userspace
> > headers.
> >
> > Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> > https://lkml.org/lkml/2015/6/3/792
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> We're safe as the only users of the struct already include via_drv.h.
> 
> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
> 
> Daniel can you pick this up (esp. since you added it with commit
> c828e20456301b0f5192a1f75e8bf8a6afd15551)

Dave already applied it.
-Daniel

> 
> Thanks
> Emil

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
@ 2015-10-21 15:33       ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-21 15:33 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, Daniel Vetter, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, open list:ABI/API

On Wed, Oct 21, 2015 at 03:36:22PM +0100, Emil Velikov wrote:
> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
> > Fixes userspace compile error since list_head is not exported to userspace
> > headers.
> >
> > Suggested by Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> at
> > https://lkml.org/lkml/2015/6/3/792
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
> We're safe as the only users of the struct already include via_drv.h.
> 
> Reviewed-by: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> Daniel can you pick this up (esp. since you added it with commit
> c828e20456301b0f5192a1f75e8bf8a6afd15551)

Dave already applied it.
-Daniel

> 
> Thanks
> Emil

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h
  2015-10-21 14:39   ` Emil Velikov
@ 2015-10-21 15:34       ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-21 15:34 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, Daniel Vetter, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, open list:ABI/API

On Wed, Oct 21, 2015 at 03:39:07PM +0100, Emil Velikov wrote:
> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compile error:
> >
> > drm/sis_drm.h:68:19: error: field ‘obj_list’ has incomplete type
> >   struct list_head obj_list;
> >
> > Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> > https://lkml.org/lkml/2015/6/3/792
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> Analogous to the via patch. Daniel can you please pick this one as well ?
> 
> Hunk was added with commit fdc0b8a63c1124bb025a2846d41531a123845740
> 
> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Same deal, already merged.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h
@ 2015-10-21 15:34       ` Daniel Vetter
  0 siblings, 0 replies; 206+ messages in thread
From: Daniel Vetter @ 2015-10-21 15:34 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, open list:ABI/API, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, Daniel Vetter

On Wed, Oct 21, 2015 at 03:39:07PM +0100, Emil Velikov wrote:
> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
> > Fixes userspace compile error:
> >
> > drm/sis_drm.h:68:19: error: field ‘obj_list’ has incomplete type
> >   struct list_head obj_list;
> >
> > Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
> > https://lkml.org/lkml/2015/6/3/792
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
> > ---
> Analogous to the via patch. Daniel can you please pick this one as well ?
> 
> Hunk was added with commit fdc0b8a63c1124bb025a2846d41531a123845740
> 
> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Same deal, already merged.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-10-21 15:18           ` Alex Deucher
@ 2015-10-21 16:21             ` Emil Velikov
  -1 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 16:21 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Mikko Rapeli, open list:ABI/API, LKML, Maling list - DRI developers

On 21 October 2015 at 16:18, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>> Hi Alex,
>>
>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>> > Fixes userspace compilation error:
>>>> >
>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>> >
>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>>
>>>> NACK on all these type conversions.  This has not been a problem for
>>>> years and years and the result looks terrible.
>>>
>>> Documentation/CodingStyle, section 5
>>>
>>>  (e) Types safe for use in userspace.
>>>
>>>      In certain structures which are visible to userspace, we cannot
>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>      use __u32 and similar types in all structures which are shared
>>>      with userspace.
>>>
>>> I have only been looking at kernel headers from userspace occationally in
>>> the past 10 years and had a several cases where the provided headers did
>>> not compile when included into trivial programs trying to use the structs
>>> for an ioctl() for example. This long lasting problem triggered me to write
>>> a test for this and provide these fixes too. In previous reviews usage
>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>> so I changed several places from uint32_t's to __u32.
>>>
>>> With these changes it is btw trivial now to add a grep test the there
>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>> rule.
>>>
>> Based of the reply from Mikko, can you please elaborate your concern ?
>> Are you thinking about some corner case where this may cause breakage,
>> or it's solely on stylistic point of view ?
>
> Style.
>
In that case shouldn't the kernel coding style (not to mention the
issues with stdint.h types Linus has brought a while back) be
considered/prevail ?

>>
>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>> with the headers in libdrm, and this will get us one step closer to
>> doing things properly.
>
> How does this affect libdrm one way or another?
>
In a strange way. Some (most?) distributions do not ship the uapi
headers from the kernel, but rely on the ones in libdrm. Due to
various issues (as addressed in the series) we have not synchronised
the headers, thus users such as the gallium radeon winsys has ended up
redefining/duplicating internally.

Thanks
Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 16:21             ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 16:21 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Mikko Rapeli, LKML, Maling list - DRI developers, open list:ABI/API

On 21 October 2015 at 16:18, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>> Hi Alex,
>>
>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>> > Fixes userspace compilation error:
>>>> >
>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>> >
>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>>
>>>> NACK on all these type conversions.  This has not been a problem for
>>>> years and years and the result looks terrible.
>>>
>>> Documentation/CodingStyle, section 5
>>>
>>>  (e) Types safe for use in userspace.
>>>
>>>      In certain structures which are visible to userspace, we cannot
>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>      use __u32 and similar types in all structures which are shared
>>>      with userspace.
>>>
>>> I have only been looking at kernel headers from userspace occationally in
>>> the past 10 years and had a several cases where the provided headers did
>>> not compile when included into trivial programs trying to use the structs
>>> for an ioctl() for example. This long lasting problem triggered me to write
>>> a test for this and provide these fixes too. In previous reviews usage
>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>> so I changed several places from uint32_t's to __u32.
>>>
>>> With these changes it is btw trivial now to add a grep test the there
>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>> rule.
>>>
>> Based of the reply from Mikko, can you please elaborate your concern ?
>> Are you thinking about some corner case where this may cause breakage,
>> or it's solely on stylistic point of view ?
>
> Style.
>
In that case shouldn't the kernel coding style (not to mention the
issues with stdint.h types Linus has brought a while back) be
considered/prevail ?

>>
>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>> with the headers in libdrm, and this will get us one step closer to
>> doing things properly.
>
> How does this affect libdrm one way or another?
>
In a strange way. Some (most?) distributions do not ship the uapi
headers from the kernel, but rely on the ones in libdrm. Due to
various issues (as addressed in the series) we have not synchronised
the headers, thus users such as the gallium radeon winsys has ended up
redefining/duplicating internally.

Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
@ 2015-10-21 16:25         ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 16:25 UTC (permalink / raw)
  To: Emil Velikov, Mikko Rapeli, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, open list:ABI/API
  Cc: Daniel Vetter

On 21 October 2015 at 16:33, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Wed, Oct 21, 2015 at 03:36:22PM +0100, Emil Velikov wrote:
>> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>> > Fixes userspace compile error since list_head is not exported to userspace
>> > headers.
>> >
>> > Suggested by Emil Velikov <emil.l.velikov@gmail.com> at
>> > https://lkml.org/lkml/2015/6/3/792
>> >
>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>> We're safe as the only users of the struct already include via_drv.h.
>>
>> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
>>
>> Daniel can you pick this up (esp. since you added it with commit
>> c828e20456301b0f5192a1f75e8bf8a6afd15551)
>
> Dave already applied it.
Did not notice. Sorry for the noise.

-Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h
@ 2015-10-21 16:25         ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 16:25 UTC (permalink / raw)
  To: Emil Velikov, Mikko Rapeli, Linux-Kernel@Vger. Kernel. Org,
	ML dri-devel, open list:ABI/API
  Cc: Daniel Vetter

On 21 October 2015 at 16:33, Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org> wrote:
> On Wed, Oct 21, 2015 at 03:36:22PM +0100, Emil Velikov wrote:
>> On 15 October 2015 at 06:55, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
>> > Fixes userspace compile error since list_head is not exported to userspace
>> > headers.
>> >
>> > Suggested by Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> at
>> > https://lkml.org/lkml/2015/6/3/792
>> >
>> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
>> We're safe as the only users of the struct already include via_drv.h.
>>
>> Reviewed-by: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> Daniel can you pick this up (esp. since you added it with commit
>> c828e20456301b0f5192a1f75e8bf8a6afd15551)
>
> Dave already applied it.
Did not notice. Sorry for the noise.

-Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
  2015-10-21 16:21             ` Emil Velikov
@ 2015-10-21 16:27               ` Alex Deucher
  -1 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-21 16:27 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, open list:ABI/API, LKML, Maling list - DRI developers

On Wed, Oct 21, 2015 at 12:21 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> On 21 October 2015 at 16:18, Alex Deucher <alexdeucher@gmail.com> wrote:
>> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>>> Hi Alex,
>>>
>>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>>> > Fixes userspace compilation error:
>>>>> >
>>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>>> >
>>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>>>
>>>>> NACK on all these type conversions.  This has not been a problem for
>>>>> years and years and the result looks terrible.
>>>>
>>>> Documentation/CodingStyle, section 5
>>>>
>>>>  (e) Types safe for use in userspace.
>>>>
>>>>      In certain structures which are visible to userspace, we cannot
>>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>>      use __u32 and similar types in all structures which are shared
>>>>      with userspace.
>>>>
>>>> I have only been looking at kernel headers from userspace occationally in
>>>> the past 10 years and had a several cases where the provided headers did
>>>> not compile when included into trivial programs trying to use the structs
>>>> for an ioctl() for example. This long lasting problem triggered me to write
>>>> a test for this and provide these fixes too. In previous reviews usage
>>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>>> so I changed several places from uint32_t's to __u32.
>>>>
>>>> With these changes it is btw trivial now to add a grep test the there
>>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>>> rule.
>>>>
>>> Based of the reply from Mikko, can you please elaborate your concern ?
>>> Are you thinking about some corner case where this may cause breakage,
>>> or it's solely on stylistic point of view ?
>>
>> Style.
>>
> In that case shouldn't the kernel coding style (not to mention the
> issues with stdint.h types Linus has brought a while back) be
> considered/prevail ?

I don't really have a strong opinion one way or another at this point.
The types just look ugly.

>
>>>
>>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>>> with the headers in libdrm, and this will get us one step closer to
>>> doing things properly.
>>
>> How does this affect libdrm one way or another?
>>
> In a strange way. Some (most?) distributions do not ship the uapi
> headers from the kernel, but rely on the ones in libdrm. Due to
> various issues (as addressed in the series) we have not synchronised
> the headers, thus users such as the gallium radeon winsys has ended up
> redefining/duplicating internally.

The problem is that you generally need the latest headers to support
the latest features in the user mode stacks, so if the user tries to
build against an older kernel, they will be missing definitions.

Alex

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 16:27               ` Alex Deucher
  0 siblings, 0 replies; 206+ messages in thread
From: Alex Deucher @ 2015-10-21 16:27 UTC (permalink / raw)
  To: Emil Velikov
  Cc: Mikko Rapeli, LKML, Maling list - DRI developers, open list:ABI/API

On Wed, Oct 21, 2015 at 12:21 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> On 21 October 2015 at 16:18, Alex Deucher <alexdeucher@gmail.com> wrote:
>> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>>> Hi Alex,
>>>
>>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>>> > Fixes userspace compilation error:
>>>>> >
>>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>>> >
>>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>>>
>>>>> NACK on all these type conversions.  This has not been a problem for
>>>>> years and years and the result looks terrible.
>>>>
>>>> Documentation/CodingStyle, section 5
>>>>
>>>>  (e) Types safe for use in userspace.
>>>>
>>>>      In certain structures which are visible to userspace, we cannot
>>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>>      use __u32 and similar types in all structures which are shared
>>>>      with userspace.
>>>>
>>>> I have only been looking at kernel headers from userspace occationally in
>>>> the past 10 years and had a several cases where the provided headers did
>>>> not compile when included into trivial programs trying to use the structs
>>>> for an ioctl() for example. This long lasting problem triggered me to write
>>>> a test for this and provide these fixes too. In previous reviews usage
>>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>>> so I changed several places from uint32_t's to __u32.
>>>>
>>>> With these changes it is btw trivial now to add a grep test the there
>>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>>> rule.
>>>>
>>> Based of the reply from Mikko, can you please elaborate your concern ?
>>> Are you thinking about some corner case where this may cause breakage,
>>> or it's solely on stylistic point of view ?
>>
>> Style.
>>
> In that case shouldn't the kernel coding style (not to mention the
> issues with stdint.h types Linus has brought a while back) be
> considered/prevail ?

I don't really have a strong opinion one way or another at this point.
The types just look ugly.

>
>>>
>>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>>> with the headers in libdrm, and this will get us one step closer to
>>> doing things properly.
>>
>> How does this affect libdrm one way or another?
>>
> In a strange way. Some (most?) distributions do not ship the uapi
> headers from the kernel, but rely on the ones in libdrm. Due to
> various issues (as addressed in the series) we have not synchronised
> the headers, thus users such as the gallium radeon winsys has ended up
> redefining/duplicating internally.

The problem is that you generally need the latest headers to support
the latest features in the user mode stacks, so if the user tries to
build against an older kernel, they will be missing definitions.

Alex
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 17:42                 ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 17:42 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Mikko Rapeli, open list:ABI/API, LKML, Maling list - DRI developers

On 21 October 2015 at 17:27, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Wed, Oct 21, 2015 at 12:21 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>> On 21 October 2015 at 16:18, Alex Deucher <alexdeucher@gmail.com> wrote:
>>> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>>>> Hi Alex,
>>>>
>>>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>>>> > Fixes userspace compilation error:
>>>>>> >
>>>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>>>> >
>>>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
>>>>>>
>>>>>> NACK on all these type conversions.  This has not been a problem for
>>>>>> years and years and the result looks terrible.
>>>>>
>>>>> Documentation/CodingStyle, section 5
>>>>>
>>>>>  (e) Types safe for use in userspace.
>>>>>
>>>>>      In certain structures which are visible to userspace, we cannot
>>>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>>>      use __u32 and similar types in all structures which are shared
>>>>>      with userspace.
>>>>>
>>>>> I have only been looking at kernel headers from userspace occationally in
>>>>> the past 10 years and had a several cases where the provided headers did
>>>>> not compile when included into trivial programs trying to use the structs
>>>>> for an ioctl() for example. This long lasting problem triggered me to write
>>>>> a test for this and provide these fixes too. In previous reviews usage
>>>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>>>> so I changed several places from uint32_t's to __u32.
>>>>>
>>>>> With these changes it is btw trivial now to add a grep test the there
>>>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>>>> rule.
>>>>>
>>>> Based of the reply from Mikko, can you please elaborate your concern ?
>>>> Are you thinking about some corner case where this may cause breakage,
>>>> or it's solely on stylistic point of view ?
>>>
>>> Style.
>>>
>> In that case shouldn't the kernel coding style (not to mention the
>> issues with stdint.h types Linus has brought a while back) be
>> considered/prevail ?
>
> I don't really have a strong opinion one way or another at this point.
> The types just look ugly.
>
Fwiw I don't find them too appealing either. But the alternative did
not fare so well :(

>>
>>>>
>>>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>>>> with the headers in libdrm, and this will get us one step closer to
>>>> doing things properly.
>>>
>>> How does this affect libdrm one way or another?
>>>
>> In a strange way. Some (most?) distributions do not ship the uapi
>> headers from the kernel, but rely on the ones in libdrm. Due to
>> various issues (as addressed in the series) we have not synchronised
>> the headers, thus users such as the gallium radeon winsys has ended up
>> redefining/duplicating internally.
>
> The problem is that you generally need the latest headers to support
> the latest features in the user mode stacks, so if the user tries to
> build against an older kernel, they will be missing definitions.
>
Pretty much that's why we have the loose release criteria for libdrm.
Get the functionality upstream (mainline or -next), pull the changes
(sync) and release. As the sync has been busted for a while, people
are forced to do unpleasant things.

-Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h
@ 2015-10-21 17:42                 ` Emil Velikov
  0 siblings, 0 replies; 206+ messages in thread
From: Emil Velikov @ 2015-10-21 17:42 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Mikko Rapeli, open list:ABI/API, LKML, Maling list - DRI developers

On 21 October 2015 at 17:27, Alex Deucher <alexdeucher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> On Wed, Oct 21, 2015 at 12:21 PM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>> On 21 October 2015 at 16:18, Alex Deucher <alexdeucher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>> On Wed, Oct 21, 2015 at 11:09 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>>>> Hi Alex,
>>>>
>>>> On 15 October 2015 at 14:48, Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org> wrote:
>>>>> On Thu, Oct 15, 2015 at 09:32:10AM -0400, Alex Deucher wrote:
>>>>>> On Thu, Oct 15, 2015 at 1:55 AM, Mikko Rapeli <mikko.rapeli@iki.fi> wrote:
>>>>>> > Fixes userspace compilation error:
>>>>>> >
>>>>>> > drm/drm_mode.h:472:2: error: unknown type name ‘uint32_t’
>>>>>> >
>>>>>> > Signed-off-by: Mikko Rapeli <mikko.rapeli-X3B1VOXEql0@public.gmane.org>
>>>>>>
>>>>>> NACK on all these type conversions.  This has not been a problem for
>>>>>> years and years and the result looks terrible.
>>>>>
>>>>> Documentation/CodingStyle, section 5
>>>>>
>>>>>  (e) Types safe for use in userspace.
>>>>>
>>>>>      In certain structures which are visible to userspace, we cannot
>>>>>      require C99 types and cannot use the 'u32' form above. Thus, we
>>>>>      use __u32 and similar types in all structures which are shared
>>>>>      with userspace.
>>>>>
>>>>> I have only been looking at kernel headers from userspace occationally in
>>>>> the past 10 years and had a several cases where the provided headers did
>>>>> not compile when included into trivial programs trying to use the structs
>>>>> for an ioctl() for example. This long lasting problem triggered me to write
>>>>> a test for this and provide these fixes too. In previous reviews usage
>>>>> of <stdint.h> and its types in kernel headers was already NACK'ed
>>>>> so I changed several places from uint32_t's to __u32.
>>>>>
>>>>> With these changes it is btw trivial now to add a grep test the there
>>>>> are no uint32_t's in include/uapi/ anymore, thus enforcing that coding style
>>>>> rule.
>>>>>
>>>> Based of the reply from Mikko, can you please elaborate your concern ?
>>>> Are you thinking about some corner case where this may cause breakage,
>>>> or it's solely on stylistic point of view ?
>>>
>>> Style.
>>>
>> In that case shouldn't the kernel coding style (not to mention the
>> issues with stdint.h types Linus has brought a while back) be
>> considered/prevail ?
>
> I don't really have a strong opinion one way or another at this point.
> The types just look ugly.
>
Fwiw I don't find them too appealing either. But the alternative did
not fare so well :(

>>
>>>>
>>>> Over the last few years we've been doing some ad-hoc 'synchronisation'
>>>> with the headers in libdrm, and this will get us one step closer to
>>>> doing things properly.
>>>
>>> How does this affect libdrm one way or another?
>>>
>> In a strange way. Some (most?) distributions do not ship the uapi
>> headers from the kernel, but rely on the ones in libdrm. Due to
>> various issues (as addressed in the series) we have not synchronised
>> the headers, thus users such as the gallium radeon winsys has ended up
>> redefining/duplicating internally.
>
> The problem is that you generally need the latest headers to support
> the latest features in the user mode stacks, so if the user tries to
> build against an older kernel, they will be missing definitions.
>
Pretty much that's why we have the loose release criteria for libdrm.
Get the functionality upstream (mainline or -next), pull the changes
(sync) and release. As the sync has been busted for a while, people
are forced to do unpleasant things.

-Emil

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers
  2015-10-15  7:17   ` Alexander Stein
  2015-10-15  7:29     ` Mikko Rapeli
@ 2015-11-10 15:03     ` Gabriel Laskar
  1 sibling, 0 replies; 206+ messages in thread
From: Gabriel Laskar @ 2015-11-10 15:03 UTC (permalink / raw)
  To: Mikko Rapeli; +Cc: Alexander Stein, linux-kernel

Hi Mikko,

On Thu, 15 Oct 2015 09:17:18 +0200
Alexander Stein <alexander.stein@systec-electronic.com> wrote:

> On Thursday 15 October 2015 07:55:40, Mikko Rapeli wrote:
> > Users of kernel header files would be happier if they did not
> > contain kernel specific parts and would contain #include statements
> > for all other header files that they depend on, and in general
> > would compile.
> > 
> > For each header file exported to userspace, this script creates
> > a simple .c file which just includes the header file. Then it
> > tries to compile it together with minimal header files from GCC
> > and libc, and reports results.  
> 
> Just an idea: Why not try to create a pre-compiled header (pch)
> instead. So you can get rid of creating temporary .c files for each
> header.

I am working on exactly the same thing, here is my suggestions for this:

* you can use -fsyntax-only in order to avoid file creation, it will be
  faster, and don't clutter the directories.
* For some headers, for example tegra_drm.h, it is expected to have
  include drm.h before, so you have to maintain a list of the headers
  that should be included before each headers.
* finally I don't think that including stdint.h/stddef.h is the right
  solution when a header is using types like size_t or uint32_t, fixing
  the headers to user __kernel_size_t and __u32 should be cleaner.

-- 
Gabriel Laskar

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 21/79] ebtables.h: use __u64 from linux/types.h
  2015-10-15  5:55   ` Mikko Rapeli
  (?)
@ 2015-11-23 16:55   ` Pablo Neira Ayuso
  -1 siblings, 0 replies; 206+ messages in thread
From: Pablo Neira Ayuso @ 2015-11-23 16:55 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Jiri Kosina, Arturo Borrero Gonzalez,
	Geert Uytterhoeven, linux-api

On Thu, Oct 15, 2015 at 07:55:59AM +0200, Mikko Rapeli wrote:
> Fixes userspace compilation error:
> 
> linux/netfilter_bridge/ebtables.h:38:2: error: unknown type name ‘uint64_t’

Applied, thanks.

^ permalink raw reply	[flat|nested] 206+ messages in thread

* Re: [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation
  2015-10-15  5:56 ` [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation Mikko Rapeli
@ 2015-11-23 16:55   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 206+ messages in thread
From: Pablo Neira Ayuso @ 2015-11-23 16:55 UTC (permalink / raw)
  To: Mikko Rapeli
  Cc: linux-kernel, Patrick McHardy, Jozsef Kadlecsik, netfilter-devel,
	coreteam, linux-api

On Thu, Oct 15, 2015 at 07:56:30AM +0200, Mikko Rapeli wrote:
> Add missing header dependencies and other small changes so that each file
> compiles alone in userspace.

Applied, thanks.

^ permalink raw reply	[flat|nested] 206+ messages in thread

end of thread, other threads:[~2015-11-23 16:55 UTC | newest]

Thread overview: 206+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-15  5:55 [PATCH v4 00/79] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 01/79] headers_install.sh: enhance error handling Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 02/79] scripts/headers_compile_test.sh: compile test script for exported headers Mikko Rapeli
2015-10-15  7:17   ` Alexander Stein
2015-10-15  7:29     ` Mikko Rapeli
2015-11-10 15:03     ` Gabriel Laskar
2015-10-15  5:55 ` [PATCH v4 03/79] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 04/79] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
2015-10-15 13:32   ` Alex Deucher
2015-10-15 13:32     ` Alex Deucher
2015-10-15 13:48     ` Mikko Rapeli
2015-10-15 13:48       ` Mikko Rapeli
2015-10-21 15:09       ` Emil Velikov
2015-10-21 15:09         ` Emil Velikov
2015-10-21 15:18         ` Alex Deucher
2015-10-21 15:18           ` Alex Deucher
2015-10-21 16:21           ` Emil Velikov
2015-10-21 16:21             ` Emil Velikov
2015-10-21 16:27             ` Alex Deucher
2015-10-21 16:27               ` Alex Deucher
2015-10-21 17:42               ` Emil Velikov
2015-10-21 17:42                 ` Emil Velikov
2015-10-15  5:55 ` [PATCH v4 05/79] exynos_drm.h: use " Mikko Rapeli
2015-10-15  5:55   ` Mikko Rapeli
2015-10-15  5:55   ` Mikko Rapeli
2015-10-15 16:17   ` Gustavo Padovan
2015-10-15 16:17     ` Gustavo Padovan
2015-10-15 16:17     ` Gustavo Padovan
2015-10-15  5:55 ` [PATCH v4 06/79] nouveau_drm.h: use __u32 and " Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 07/79] radeon_drm.h: " Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 08/79] r128_drm.h: include drm/drm.h Mikko Rapeli
2015-10-15  7:43   ` Daniel Vetter
2015-10-15  7:43     ` Daniel Vetter
2015-10-15  5:55 ` [PATCH v4 09/79] via_drm.h: don't include non-existing via_drmclient.h Mikko Rapeli
2015-10-21 15:01   ` Emil Velikov
2015-10-21 15:01     ` Emil Velikov
2015-10-15  5:55 ` [PATCH v4 10/79] via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h Mikko Rapeli
2015-10-21 14:36   ` Emil Velikov
2015-10-21 14:36     ` Emil Velikov
2015-10-21 15:33     ` Daniel Vetter
2015-10-21 15:33       ` Daniel Vetter
2015-10-21 16:25       ` Emil Velikov
2015-10-21 16:25         ` Emil Velikov
2015-10-15  5:55 ` [PATCH v4 11/79] savage_drm.h: include <drm/drm.h> Mikko Rapeli
2015-10-15  5:55   ` Mikko Rapeli
2015-10-15  6:44   ` Daniel Vetter
2015-10-15  6:44     ` Daniel Vetter
2015-10-15  5:55 ` [PATCH v4 12/79] include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h Mikko Rapeli
2015-10-21 14:39   ` Emil Velikov
2015-10-21 15:34     ` Daniel Vetter
2015-10-21 15:34       ` Daniel Vetter
2015-10-15  5:55 ` [PATCH v4 13/79] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
2015-10-15  7:44   ` Daniel Vetter
2015-10-15  7:44     ` Daniel Vetter
2015-10-15  5:55 ` [PATCH v4 14/79] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 15/79] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 16/79] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 17/79] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP macro Mikko Rapeli
2015-10-15  5:55   ` Mikko Rapeli
2015-10-15  8:04   ` Takashi Iwai
2015-10-15  8:04     ` Takashi Iwai
2015-10-15  5:55 ` [PATCH v4 18/79] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
2015-10-15  8:09   ` Mike Snitzer
2015-10-15  8:09     ` Mike Snitzer
2015-10-15 17:53     ` Mikko Rapeli
2015-10-15 17:53       ` Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 19/79] hsi_char.h: use __u32 " Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 20/79] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
2015-10-15  5:55 ` [PATCH v4 21/79] ebtables.h: use __u64 from linux/types.h Mikko Rapeli
2015-10-15  5:55   ` Mikko Rapeli
2015-11-23 16:55   ` Pablo Neira Ayuso
2015-10-15  5:56 ` [PATCH v4 22/79] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 23/79] rds.h: " Mikko Rapeli
2015-10-15 11:06   ` Sowmini Varadhan
2015-10-15 11:06     ` Sowmini Varadhan
2015-10-15 22:00     ` Mikko Rapeli
2015-10-15 22:00       ` Mikko Rapeli
2015-10-15 22:21       ` Sowmini Varadhan
2015-10-15 22:39         ` Mikko Rapeli
2015-10-15 22:39           ` Mikko Rapeli
2015-10-15 23:03           ` Sowmini Varadhan
2015-10-15 23:03             ` Sowmini Varadhan
2015-10-15  5:56 ` [PATCH v4 24/79] sctp.h: use __u8 and __u32 " Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 25/79] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 26/79] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 27/79] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 28/79] hdspm.h: use __u8, __u32 and __u64 from linux/types.h instead of stdint.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  8:04   ` Takashi Iwai
2015-10-15  8:04     ` Takashi Iwai
2015-10-15  5:56 ` [PATCH v4 29/79] gntalloc.h: use __u16, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-10-15  5:56 ` Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15 10:55   ` David Vrabel
2015-10-15 10:55   ` [Xen-devel] " David Vrabel
2015-10-15 10:55     ` David Vrabel
2015-10-15  5:56 ` [PATCH v4 30/79] gntdev.h: use " Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15 10:56   ` David Vrabel
2015-10-15 10:56   ` [Xen-devel] " David Vrabel
2015-10-15 10:56     ` David Vrabel
2015-10-15  5:56 ` [PATCH v4 31/79] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 32/79] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 33/79] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 34/79] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 35/79] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 36/79] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 37/79] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 38/79] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
2015-10-15 11:10   ` Sowmini Varadhan
2015-10-15 11:10     ` Sowmini Varadhan
2015-10-15  5:56 ` [PATCH v4 39/79] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 40/79] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 41/79] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 42/79] " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 43/79] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 44/79] include/uapi/linux/if_pppox.h: " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 45/79] linux/if.h linux/hdlc/ioctl.h: move IFNAMSIZ definition to hdlc/ioctl.h Mikko Rapeli
2015-10-15  8:49   ` Frans Klaver
2015-10-15  8:49     ` Frans Klaver
2015-10-15 18:08     ` Mikko Rapeli
2015-10-15 18:08       ` Mikko Rapeli
2015-10-15 18:11       ` [PATCH] " Mikko Rapeli
2015-10-15 18:11         ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 46/79] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 47/79] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 48/79] include/uapi/linux/mqueue.h: include linux/types.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 49/79] include/uapi/linux/mroute.h: include linux/in.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 50/79] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 51/79] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 52/79] include/uapi/netfilter/*.h: fix include files for compilation Mikko Rapeli
2015-11-23 16:55   ` Pablo Neira Ayuso
2015-10-15  5:56 ` [PATCH v4 53/79] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 54/79] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 55/79] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 56/79] include/uapi/linux/auto_fs.h: include linux/limits.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 57/79] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 58/79] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 59/79] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 60/79] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 61/79] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 62/79] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 63/79] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 64/79] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 65/79] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 66/79] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 67/79] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 68/79] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 69/79] include/uapi/linux/dvb/video.h: remove stdint.h include Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 70/79] include/uapi/mtd/mtd-user.h: " Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 71/79] include/uapi/linux/fuse.h: use linux/types.h also in userspace Mikko Rapeli
2015-10-15 15:20   ` Miklos Szeredi
2015-10-15 15:20     ` Miklos Szeredi
2015-10-15 17:41     ` Mikko Rapeli
2015-10-15 17:41       ` Mikko Rapeli
2015-10-15 18:32       ` Miklos Szeredi
2015-10-15 18:32         ` Miklos Szeredi
2015-10-15 18:59         ` Arnd Bergmann
2015-10-15 18:59           ` Arnd Bergmann
2015-10-15 19:25           ` Miklos Szeredi
2015-10-15 21:03             ` Mikko Rapeli
2015-10-15 21:03               ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 72/79] include/linux/ipmi-fru.h: use linux/types.h instead of stdint.h Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 73/79] include/linux/sdb.h: use linux/types.h types " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 74/79] include/linux/xz.h: " Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 75/79] include/uapi/xen/privcmd.h: fix compilation in userspace Mikko Rapeli
2015-10-15  5:56 ` Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15 10:07   ` kbuild test robot
2015-10-15 10:07   ` kbuild test robot
2015-10-15 10:07     ` kbuild test robot
2015-10-15 10:07     ` kbuild test robot
2015-10-15 10:29   ` David Vrabel
2015-10-15 10:29     ` David Vrabel
2015-10-15 10:29     ` David Vrabel
2015-10-15 11:18     ` Mikko Rapeli
2015-10-15 11:18     ` Mikko Rapeli
2015-10-15 11:18       ` Mikko Rapeli
2015-10-15 11:24       ` David Vrabel
2015-10-15 11:24       ` David Vrabel
2015-10-15 11:24         ` David Vrabel
2015-10-15 11:24         ` David Vrabel
2015-10-15 11:35         ` Mikko Rapeli
2015-10-15 11:35           ` Mikko Rapeli
2015-10-15 11:35           ` Mikko Rapeli
2015-10-15 11:35         ` Mikko Rapeli
2015-10-15 10:29   ` David Vrabel
2015-10-15  5:56 ` [PATCH v4 76/79] coda_psdev.h: move upc_req definition from uapi to kernel side headers Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 77/79] include/uapi/linux/elfcore.h: remove non-compiling userspace parts Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 78/79] include/uapi/linux/errqueue.h: include time.h in userspace Mikko Rapeli
2015-10-15  5:56 ` [PATCH v4 79/79] arch/arm/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-10-15  5:56   ` Mikko Rapeli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.