Skip to content

Commit 4745d67

Browse files
committed
Use the proper types for functions in Truffle::POSIX
* Notably nfds_t is ulong vs uint on Linux vs Darwin
1 parent 5b08416 commit 4745d67

File tree

6 files changed

+15
-8
lines changed

6 files changed

+15
-8
lines changed

src/main/java/org/truffleruby/platform/DarwinAArch64NativeConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,7 @@ public static void load(NativeConfiguration configuration, RubyContext context)
750750
configuration.config("platform.typedef.sae_connid_t", string(context, "uint"));
751751
configuration.config("platform.typedef.rlim_t", string(context, "ulong_long"));
752752
configuration.config("platform.typedef.rusage_info_t", string(context, "pointer"));
753+
configuration.config("platform.typedef.nfds_t", string(context, "uint"));
753754
configuration.config("platform.typedef.pthread_t", string(context, "pointer"));
754755
}
755756

src/main/java/org/truffleruby/platform/DarwinAMD64NativeConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,7 @@ public static void load(NativeConfiguration configuration, RubyContext context)
749749
configuration.config("platform.typedef.sae_connid_t", string(context, "uint"));
750750
configuration.config("platform.typedef.rlim_t", string(context, "ulong_long"));
751751
configuration.config("platform.typedef.rusage_info_t", string(context, "pointer"));
752+
configuration.config("platform.typedef.nfds_t", string(context, "uint"));
752753
configuration.config("platform.typedef.pthread_t", string(context, "pointer"));
753754
}
754755

src/main/java/org/truffleruby/platform/LinuxAArch64NativeConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,7 @@ public static void load(NativeConfiguration configuration, RubyContext context)
863863
configuration.config("platform.typedef.sa_family_t", string(context, "ushort"));
864864
configuration.config("platform.typedef.rlim_t", string(context, "ulong"));
865865
configuration.config("platform.typedef.rlim64_t", string(context, "ulong"));
866+
configuration.config("platform.typedef.nfds_t", string(context, "ulong"));
866867
}
867868

868869
}

src/main/java/org/truffleruby/platform/LinuxAMD64NativeConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,7 @@ public static void load(NativeConfiguration configuration, RubyContext context)
863863
configuration.config("platform.typedef.sa_family_t", string(context, "ushort"));
864864
configuration.config("platform.typedef.rlim_t", string(context, "ulong"));
865865
configuration.config("platform.typedef.rlim64_t", string(context, "ulong"));
866+
configuration.config("platform.typedef.nfds_t", string(context, "ulong"));
866867
}
867868

868869
}

src/main/ruby/truffleruby/core/posix.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ def self.attach_function_eagerly(native_name, argument_types, return_type,
199199
attach_function :fsync, [:int], :int
200200
attach_function :ftruncate, [:int, :off_t], :int
201201
attach_function :getcwd, [:pointer, :size_t], :string
202-
attach_function :ioctl, [:int, :ulong, :long], :int
202+
attach_function :ioctl, [:int, :ulong, varargs(:pointer)], :int
203203
attach_function :isatty, [:int], :int
204204
attach_function :lchmod, [:string, :mode_t], :int
205205
attach_function :lchown, [:string, :uid_t, :gid_t], :int
@@ -216,7 +216,7 @@ def self.attach_function_eagerly(native_name, argument_types, return_type,
216216
attach_function :pipe, [:pointer], :int
217217
# blocking=false for both poll because the timeout needs to be decreased on EINTR
218218
attach_function :truffleposix_poll_single_fd, [:int, :int, :int], :int, LIBTRUFFLEPOSIX
219-
attach_function :poll, [:pointer, :long, :int], :int
219+
attach_function :poll, [:pointer, :nfds_t, :int], :int
220220
attach_function :read, [:int, :pointer, :size_t], :ssize_t, LIBC, true
221221
attach_function :readlink, [:string, :pointer, :size_t], :ssize_t
222222
attach_function :realpath, [:string, :pointer], :pointer
@@ -240,7 +240,7 @@ def self.attach_function_eagerly(native_name, argument_types, return_type,
240240
Truffle::Boot.delay do
241241
if NATIVE
242242
# We should capture the non-lazy method
243-
attach_function_eagerly :poll, [:pointer, :long, :int], :int, LIBC, false, :poll, self
243+
attach_function_eagerly :poll, [:pointer, :nfds_t, :int], :int, LIBC, false, :poll, self
244244
POLL = method(:poll)
245245
end
246246
end

tool/generate-native-config.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -358,11 +358,14 @@ def initialize
358358
end
359359

360360
def source(io)
361-
io.puts '#include <stdint.h>'
362-
io.puts '#include <stddef.h>'
363-
io.puts '#include <sys/types.h>'
364-
io.puts '#include <sys/socket.h>'
365-
io.puts '#include <sys/resource.h>'
361+
io.puts <<~C
362+
#include <stdint.h>
363+
#include <stddef.h>
364+
#include <sys/types.h>
365+
#include <sys/socket.h>
366+
#include <sys/resource.h>
367+
#include <poll.h>
368+
C
366369
end
367370

368371
def compile_command(source, target)

0 commit comments

Comments
 (0)