Skip to contentSkip to conversation

define __ prefixed version of intXY_t types

PATCH In review Khem Raj 3 participants 6 messages Sep 8, 2017 – Sep 9, 2017

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH 1/1 define __ prefixed version of intXY_t types

This is required since musl does not define them
unlike glibc

---
 include/linux.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
include/linux.h +29 -0
index 9611a37f..1f6319c6 100644
@@ -40,6 +40,35 @@
 # undef fsxattr
 #endif
 
+#ifndef loff_t
+#define loff_t off_t
+#endif
+#ifndef __uint8_t
+#define __uint8_t uint8_t
+#endif
+#ifndef __uint16_t
+#define __uint16_t uint16_t
+#endif
+#ifndef __uint32_t
+#define __uint32_t uint32_t
+#endif
+#ifndef __uint64_t
+#define __uint64_t uint64_t
+#endif
+
+#ifndef __int8_t
+#define __int8_t int8_t
+#endif
+#ifndef __int16_t
+#define __int16_t int16_t
+#endif
+#ifndef __int32_t
+#define __int32_t int32_t
+#endif
+#ifndef __int64_t
+#define __int64_t int64_t
+#endif
+
 static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
 {
 	return ioctl(fd, cmd, p);
Signature · 1 line
2.14.1
Reviewed-by Carlos Maiolino Reviewed-by Darrick J. Wong on v1 1/1
#1 lore raw
Quoted 13 lines · Khem Raj

This is required since musl does not define them
unlike glibc

---
 include/linux.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
include/linux.h +0 -0
index 9611a37f..1f6319c6 100644

include/linux.h line 44

Quoted 5 lines
include/linux.h +2 -0
@@ -40,6 +40,35 @@
 # undef fsxattr
 #endif
 
+#ifndef loff_t
+#define loff_t off_t

I think you should just switch to off64_t in io/copy_file_range.c, the only user of loff_t.

None of the following double-underscore types are present in xfsprogs since this commit:

commit 14f8b6810bd240cc58131483790a099fcf56c073

Author: Darrick J. Wong <[email protected]>
Date:   Fri Aug 4 16:33:51 2017 -0500

xfsprogs: remove double-underscore integer types

This is a purely mechanical patch that removes the private __{u,}int{8,16,32,64}_t typedefs in favor of using the system {u,}int{8,16,32,64}_t typedefs. This is the sed script used to perform the transformation and fix the resulting whitespace and indentation errors:

s/typedef\t__uint8_t/typedef __uint8_t\t/g s/typedef\t__uint/typedef __uint/g s/typedef\t__int\([0-9]*\)_t/typedef int\1_t\t/g s/__uint8_t\t/__uint8_t\t\t/g s/__uint/uint/g s/__int\([0-9]*\)_t\t/__int\1_t\t\t/g s/__int/int/g
/^typedef.*int[0-9]*_t;$/d

currently on the for-next branch of xfsprogs. You might want to carry that patch until 4.13 is released.

(and 4a492e7 xfs: remove double-underscore integer types as well)

-Eric

Quoted 31 lines
include/linux.h +27 -0
+#endif
+#ifndef __uint8_t
+#define __uint8_t uint8_t
+#endif
+#ifndef __uint16_t
+#define __uint16_t uint16_t
+#endif
+#ifndef __uint32_t
+#define __uint32_t uint32_t
+#endif
+#ifndef __uint64_t
+#define __uint64_t uint64_t
+#endif
+
+#ifndef __int8_t
+#define __int8_t int8_t
+#endif
+#ifndef __int16_t
+#define __int16_t int16_t
+#endif
+#ifndef __int32_t
+#define __int32_t int32_t
+#endif
+#ifndef __int64_t
+#define __int64_t int64_t
+#endif
+
 static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
 {
 	return ioctl(fd, cmd, p);
author
#2 lore raw
Quoted 17 lines · Eric Sandeen
Quoted 16 lines · Khem Raj

This is required since musl does not define them
unlike glibc

---
 include/linux.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
include/linux.h +0 -0
index 9611a37f..1f6319c6 100644
@@ -40,6 +40,35 @@
 # undef fsxattr
 #endif
 
Quoted 5 lines

include/linux.h line 44

Quoted 2 lines
include/linux.h +2 -0
+#ifndef loff_t
+#define loff_t off_t

I think you should just switch to off64_t in io/copy_file_range.c, the only user of loff_t.

OK. I was just following the darwin.h lead but I will make this change in v2

Quoted 3 lines

None of the following double-underscore types are present in xfsprogs since this commit:

I think it was not a complete commit. I still see issues. I will see if I can fix them

Quoted 66 lines

commit 14f8b6810bd240cc58131483790a099fcf56c073

Author: Darrick J. Wong <[email protected]>
Date:   Fri Aug 4 16:33:51 2017 -0500

xfsprogs: remove double-underscore integer types

This is a purely mechanical patch that removes the private __{u,}int{8,16,32,64}_t typedefs in favor of using the system {u,}int{8,16,32,64}_t typedefs. This is the sed script used to perform the transformation and fix the resulting whitespace and indentation errors:

s/typedef\t__uint8_t/typedef __uint8_t\t/g s/typedef\t__uint/typedef __uint/g s/typedef\t__int\([0-9]*\)_t/typedef int\1_t\t/g s/__uint8_t\t/__uint8_t\t\t/g s/__uint/uint/g s/__int\([0-9]*\)_t\t/__int\1_t\t\t/g s/__int/int/g
/^typedef.*int[0-9]*_t;$/d

currently on the for-next branch of xfsprogs. You might want to carry that patch until 4.13 is released.

(and 4a492e7 xfs: remove double-underscore integer types as well)

-Eric

Quoted 31 lines
include/linux.h +27 -0
+#endif
+#ifndef __uint8_t
+#define __uint8_t uint8_t
+#endif
+#ifndef __uint16_t
+#define __uint16_t uint16_t
+#endif
+#ifndef __uint32_t
+#define __uint32_t uint32_t
+#endif
+#ifndef __uint64_t
+#define __uint64_t uint64_t
+#endif
+
+#ifndef __int8_t
+#define __int8_t int8_t
+#endif
+#ifndef __int16_t
+#define __int16_t int16_t
+#endif
+#ifndef __int32_t
+#define __int32_t int32_t
+#endif
+#ifndef __int64_t
+#define __int64_t int64_t
+#endif
+
 static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
 {
      return ioctl(fd, cmd, p);
author
#3 lore raw
Quoted 18 lines · Khem Raj
Quoted 17 lines · Eric Sandeen
Quoted 16 lines · Khem Raj

This is required since musl does not define them
unlike glibc

---
 include/linux.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
include/linux.h +0 -0
index 9611a37f..1f6319c6 100644
@@ -40,6 +40,35 @@
 # undef fsxattr
 #endif
 
Quoted 8 lines
Quoted 5 lines

include/linux.h line 44

Quoted 2 lines
include/linux.h +2 -0
+#ifndef loff_t
+#define loff_t off_t

I think you should just switch to off64_t in io/copy_file_range.c, the only user of loff_t.

OK. I was just following the darwin.h lead but I will make this change in v2

This seems to work ok with musl, if fcntl.h is included with -D_GNU_SOURCE which seems to be the case here so I did not do this change.

Quoted 6 lines
Quoted 3 lines

None of the following double-underscore types are present in xfsprogs since this commit:

I think it was not a complete commit. I still see issues. I will see if I can fix them

I sent another patch that fixes the remaining issues with __[u]int* uses and compiles fine with musl.

Quoted 67 lines
Quoted 67 lines

commit 14f8b6810bd240cc58131483790a099fcf56c073

Author: Darrick J. Wong <[email protected]>
Date:   Fri Aug 4 16:33:51 2017 -0500

xfsprogs: remove double-underscore integer types

This is a purely mechanical patch that removes the private __{u,}int{8,16,32,64}_t typedefs in favor of using the system {u,}int{8,16,32,64}_t typedefs. This is the sed script used to perform the transformation and fix the resulting whitespace and indentation errors:

s/typedef\t__uint8_t/typedef __uint8_t\t/g s/typedef\t__uint/typedef __uint/g s/typedef\t__int\([0-9]*\)_t/typedef int\1_t\t/g s/__uint8_t\t/__uint8_t\t\t/g s/__uint/uint/g s/__int\([0-9]*\)_t\t/__int\1_t\t\t/g s/__int/int/g
/^typedef.*int[0-9]*_t;$/d

currently on the for-next branch of xfsprogs. You might want to carry that patch until 4.13 is released.

(and 4a492e7 xfs: remove double-underscore integer types as well)

-Eric

Quoted 31 lines
include/linux.h +27 -0
+#endif
+#ifndef __uint8_t
+#define __uint8_t uint8_t
+#endif
+#ifndef __uint16_t
+#define __uint16_t uint16_t
+#endif
+#ifndef __uint32_t
+#define __uint32_t uint32_t
+#endif
+#ifndef __uint64_t
+#define __uint64_t uint64_t
+#endif
+
+#ifndef __int8_t
+#define __int8_t int8_t
+#endif
+#ifndef __int16_t
+#define __int16_t int16_t
+#endif
+#ifndef __int32_t
+#define __int32_t int32_t
+#endif
+#ifndef __int64_t
+#define __int64_t int64_t
+#endif
+
 static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
 {
      return ioctl(fd, cmd, p);
#4 lore raw
In reply to Khem Raj
Quoted 2 lines · Khem Raj

This is required since musl does not define them
unlike glibc

[u]int*_t types are defined by the C99 standard and are supposed to be provided by stdint.h. If musl is not providing stdint.h, then the C99 compliant compiler should be.

What's the compilation error you're trying to fix?

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#5 lore raw
Quoted 7 lines · Dave Chinner
Quoted 2 lines · Khem Raj

This is required since musl does not define them
unlike glibc

[u]int*_t types are defined by the C99 standard and are supposed to be provided by stdint.h. If musl is not providing stdint.h, then the C99 compliant compiler should be.

Sorry, ignore this, I read the defines the wrong way around. (more coffee!)

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]