std.Io.Threaded: import std.mem.Alignment

This commit is contained in:
Andrew Kelley 2025-11-21 12:05:29 -08:00
parent cf744aa182
commit b052afd24b

View File

@ -13,6 +13,7 @@ const net = std.Io.net;
const HostName = std.Io.net.HostName; const HostName = std.Io.net.HostName;
const IpAddress = std.Io.net.IpAddress; const IpAddress = std.Io.net.IpAddress;
const Allocator = std.mem.Allocator; const Allocator = std.mem.Allocator;
const Alignment = std.mem.Alignment;
const assert = std.debug.assert; const assert = std.debug.assert;
const posix = std.posix; const posix = std.posix;
@ -399,7 +400,7 @@ const AsyncClosure = struct {
func: *const fn (context: *anyopaque, result: *anyopaque) void, func: *const fn (context: *anyopaque, result: *anyopaque) void,
reset_event: ResetEvent, reset_event: ResetEvent,
select_condition: ?*ResetEvent, select_condition: ?*ResetEvent,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
result_offset: usize, result_offset: usize,
alloc_len: usize, alloc_len: usize,
@ -445,9 +446,9 @@ const AsyncClosure = struct {
fn init( fn init(
gpa: Allocator, gpa: Allocator,
result_len: usize, result_len: usize,
result_alignment: std.mem.Alignment, result_alignment: Alignment,
context: []const u8, context: []const u8,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
func: *const fn (context: *const anyopaque, result: *anyopaque) void, func: *const fn (context: *const anyopaque, result: *anyopaque) void,
) Allocator.Error!*AsyncClosure { ) Allocator.Error!*AsyncClosure {
const max_context_misalignment = context_alignment.toByteUnits() -| @alignOf(AsyncClosure); const max_context_misalignment = context_alignment.toByteUnits() -| @alignOf(AsyncClosure);
@ -492,9 +493,9 @@ const AsyncClosure = struct {
fn async( fn async(
userdata: ?*anyopaque, userdata: ?*anyopaque,
result: []u8, result: []u8,
result_alignment: std.mem.Alignment, result_alignment: Alignment,
context: []const u8, context: []const u8,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
start: *const fn (context: *const anyopaque, result: *anyopaque) void, start: *const fn (context: *const anyopaque, result: *anyopaque) void,
) ?*Io.AnyFuture { ) ?*Io.AnyFuture {
const t: *Threaded = @ptrCast(@alignCast(userdata)); const t: *Threaded = @ptrCast(@alignCast(userdata));
@ -544,9 +545,9 @@ fn async(
fn concurrent( fn concurrent(
userdata: ?*anyopaque, userdata: ?*anyopaque,
result_len: usize, result_len: usize,
result_alignment: std.mem.Alignment, result_alignment: Alignment,
context: []const u8, context: []const u8,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
start: *const fn (context: *const anyopaque, result: *anyopaque) void, start: *const fn (context: *const anyopaque, result: *anyopaque) void,
) Io.ConcurrentError!*Io.AnyFuture { ) Io.ConcurrentError!*Io.AnyFuture {
if (builtin.single_threaded) return error.ConcurrencyUnavailable; if (builtin.single_threaded) return error.ConcurrencyUnavailable;
@ -591,7 +592,7 @@ const GroupClosure = struct {
/// Points to sibling `GroupClosure`. Used for walking the group to cancel all. /// Points to sibling `GroupClosure`. Used for walking the group to cancel all.
node: std.SinglyLinkedList.Node, node: std.SinglyLinkedList.Node,
func: *const fn (*Io.Group, context: *anyopaque) void, func: *const fn (*Io.Group, context: *anyopaque) void,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
alloc_len: usize, alloc_len: usize,
fn start(closure: *Closure) void { fn start(closure: *Closure) void {
@ -632,7 +633,7 @@ const GroupClosure = struct {
t: *Threaded, t: *Threaded,
group: *Io.Group, group: *Io.Group,
context: []const u8, context: []const u8,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
func: *const fn (*Io.Group, context: *const anyopaque) void, func: *const fn (*Io.Group, context: *const anyopaque) void,
) Allocator.Error!*GroupClosure { ) Allocator.Error!*GroupClosure {
const max_context_misalignment = context_alignment.toByteUnits() -| @alignOf(GroupClosure); const max_context_misalignment = context_alignment.toByteUnits() -| @alignOf(GroupClosure);
@ -671,7 +672,7 @@ fn groupAsync(
userdata: ?*anyopaque, userdata: ?*anyopaque,
group: *Io.Group, group: *Io.Group,
context: []const u8, context: []const u8,
context_alignment: std.mem.Alignment, context_alignment: Alignment,
start: *const fn (*Io.Group, context: *const anyopaque) void, start: *const fn (*Io.Group, context: *const anyopaque) void,
) void { ) void {
const t: *Threaded = @ptrCast(@alignCast(userdata)); const t: *Threaded = @ptrCast(@alignCast(userdata));
@ -790,7 +791,7 @@ fn await(
userdata: ?*anyopaque, userdata: ?*anyopaque,
any_future: *Io.AnyFuture, any_future: *Io.AnyFuture,
result: []u8, result: []u8,
result_alignment: std.mem.Alignment, result_alignment: Alignment,
) void { ) void {
_ = result_alignment; _ = result_alignment;
const t: *Threaded = @ptrCast(@alignCast(userdata)); const t: *Threaded = @ptrCast(@alignCast(userdata));
@ -802,7 +803,7 @@ fn cancel(
userdata: ?*anyopaque, userdata: ?*anyopaque,
any_future: *Io.AnyFuture, any_future: *Io.AnyFuture,
result: []u8, result: []u8,
result_alignment: std.mem.Alignment, result_alignment: Alignment,
) void { ) void {
_ = result_alignment; _ = result_alignment;
const t: *Threaded = @ptrCast(@alignCast(userdata)); const t: *Threaded = @ptrCast(@alignCast(userdata));