Browse Source

unix: use private copy of ustat_t on Linux

The ustat syscall has been deprecated on Linux for a long time and the
upcoming glibc 2.28 will remove ustat.h and it can no longer be used to
to generate the Ustat_t wrapper type. Since Linux still provides the
syscall, let's not break this functionality and add a private copy of
struct ustat so Ustat_t can still be generated.

Updates golang/go#25990

Change-Id: I74cf405ce6df92da36f1ee900ab6d98997d8f994
Reviewed-on: https://go-review.googlesource.com/120295
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Tobias Klauser 7 năm trước cách đây
mục cha
commit
63fc586f45
1 tập tin đã thay đổi với 9 bổ sung1 xóa
  1. 9 1
      unix/linux/types.go

+ 9 - 1
unix/linux/types.go

@@ -60,7 +60,6 @@ package unix
 #include <asm/ptrace.h>
 #include <time.h>
 #include <unistd.h>
-#include <ustat.h>
 #include <utime.h>
 #include <linux/can.h>
 #include <linux/if_alg.h>
@@ -297,6 +296,15 @@ struct perf_event_attr_go {
 	__u32 __reserved_2;
 };
 
+// ustat is deprecated and glibc 2.28 removed ustat.h. Provide the type here for
+// backwards compatibility. Copied from /usr/include/bits/ustat.h
+struct ustat {
+	__daddr_t f_tfree;
+	__ino_t f_tinode;
+	char f_fname[6];
+	char f_fpack[6];
+};
+
 */
 import "C"