Skip to content

External Execution Interface #4616

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 46 commits into from
May 7, 2025
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
448184f
Initial External Execution Interface
nibanks Oct 16, 2024
442c928
Make .NET and Kernel mode happy
nibanks Oct 16, 2024
e0f9d13
Check function
nibanks Oct 16, 2024
adb9ad9
Incomplete example
nibanks Oct 16, 2024
882e630
Simplify
nibanks Oct 16, 2024
da9e0b2
Fix .net
nibanks Oct 16, 2024
94efc44
Remove leftovers
nibanks Oct 16, 2024
9695592
fixes
nibanks Oct 16, 2024
4554407
wip
nibanks Oct 18, 2024
40d1e84
wip
nibanks Oct 28, 2024
74835cf
docs
nibanks Oct 31, 2024
f73a471
Merge branch 'main' into external-execution
nibanks Dec 5, 2024
b743020
A bit of documentation
nibanks Dec 6, 2024
dd7abe0
c++ formatting is nicer
nibanks Dec 6, 2024
be0855e
Merge branch 'main' into external-execution
nibanks Jan 4, 2025
919ae67
Updates to latest design
nibanks Jan 4, 2025
0e4b73d
Merge branch 'main' into external-execution
nibanks Jan 7, 2025
94b4c3f
wip
nibanks Jan 8, 2025
446a9f3
wip
nibanks Jan 22, 2025
f39e7f8
Merge branch 'main' into external-execution
nibanks Mar 17, 2025
b15ba57
Merge branch 'main' into external-execution
nibanks Mar 18, 2025
4a86d10
Merge branch 'main' into external-execution
nibanks Apr 10, 2025
bd22e7d
Merge branch 'main' into external-execution
nibanks Apr 17, 2025
c5b97f8
WIP
nibanks Apr 17, 2025
d2d209c
Merge branch 'main' into external-execution
nibanks Apr 28, 2025
3264294
Merge branch 'main' into external-execution
nibanks Apr 28, 2025
9603086
wip
nibanks Apr 28, 2025
a06aa81
renames
nibanks Apr 28, 2025
8c7c05b
Fix clog
nibanks Apr 28, 2025
8948a57
Merge branch 'main' into external-execution
nibanks Apr 30, 2025
2e1bf82
Merge branch 'main' into external-execution
nibanks May 6, 2025
74b8cb9
Fix clean up code
nibanks May 6, 2025
9ccc97d
fix builds
nibanks May 6, 2025
4cab2f5
fixes
nibanks May 6, 2025
7c4b651
Merge branch 'main' into external-execution
nibanks May 6, 2025
ad32894
Single thread test app works!
nibanks May 6, 2025
2039771
unreferenced parameters
nibanks May 6, 2025
a44b999
Fix kernel builds
nibanks May 6, 2025
da26362
another try for kernel mode
nibanks May 6, 2025
e5731f4
Trying to fix rust
nibanks May 6, 2025
38feb45
another try
nibanks May 6, 2025
fd4a623
Another try
nibanks May 6, 2025
630aa78
Another try
nibanks May 6, 2025
f387952
forgot one
nibanks May 6, 2025
cfefdf8
oops
nibanks May 6, 2025
2924b64
hack for mac
nibanks May 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions src/cs/lib/msquic_generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,40 @@
internal fixed ushort ProcessorList[1];
}

internal unsafe partial struct QUIC_EXECUTION_CONTEXT_CONFIG
{
[NativeTypeName("uint32_t")]
internal uint IdealProcessor;

[NativeTypeName("uint32_t")]
internal uint PollingIdleTimeoutUs;

[NativeTypeName("QUIC_EVENTQ *")]
internal void** EventQ;
}

internal partial struct QUIC_EXECUTION_CONTEXT
{
}

internal unsafe partial struct QUIC_EXECUTION_TABLE
{
[NativeTypeName("QUIC_EXECUTION_CREATE_FN")]
internal delegate* unmanaged[Cdecl]<QUIC_EXECUTION_CONFIG_FLAGS, uint, QUIC_EXECUTION_CONTEXT_CONFIG*, QUIC_EXECUTION_CONTEXT**, int> ExecutionCreate;

[NativeTypeName("QUIC_EXECUTION_DELETE_FN")]
internal delegate* unmanaged[Cdecl]<uint, QUIC_EXECUTION_CONTEXT**, void> ExecutionDelete;

[NativeTypeName("QUIC_EXECUTION_POLL_FN")]
internal delegate* unmanaged[Cdecl]<QUIC_EXECUTION_CONTEXT*, uint> Poll;

[NativeTypeName("QUIC_EXECUTION_CHECK_CQE_FN")]
internal delegate* unmanaged[Cdecl]<_OVERLAPPED_ENTRY*, byte> CheckCqe;

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

Cannot take the address of, get the size of, or declare a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

Cannot take the address of, get the size of, or declare a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 265 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

[NativeTypeName("QUIC_EXECUTION_PROCESS_CQE_FN")]
internal delegate* unmanaged[Cdecl]<QUIC_EXECUTION_CONTEXT*, _OVERLAPPED_ENTRY*, uint, uint> ProcessCqe;

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (macos, macos-12, universal, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

Cannot take the address of, get the size of, or declare a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

Cannot take the address of, get the size of, or declare a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-24.04, x64, openssl3, -UseXdp)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-22.04, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (linux, ubuntu-20.04, x64, openssl)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl3)

The type or namespace name '_OVERLAPPED_ENTRY' could not be found (are you missing a using directive or an assembly reference?)

Check warning on line 268 in src/cs/lib/msquic_generated.cs

View workflow job for this annotation

GitHub Actions / DotNet Test (windows, windows-2022, x64, openssl3)

This takes the address of, gets the size of, or declares a pointer to a managed type ('_OVERLAPPED_ENTRY')
}

internal unsafe partial struct QUIC_REGISTRATION_CONFIG
{
[NativeTypeName("const char *")]
Expand Down Expand Up @@ -3345,6 +3379,9 @@
[NativeTypeName("#define QUIC_PARAM_GLOBAL_STATELESS_RESET_KEY 0x0100000B")]
internal const uint QUIC_PARAM_GLOBAL_STATELESS_RESET_KEY = 0x0100000B;

[NativeTypeName("#define QUIC_PARAM_GLOBAL_EXECUTION_TABLE 0x0100000C")]
internal const uint QUIC_PARAM_GLOBAL_EXECUTION_TABLE = 0x0100000C;

[NativeTypeName("#define QUIC_PARAM_CONFIGURATION_SETTINGS 0x03000000")]
internal const uint QUIC_PARAM_CONFIGURATION_SETTINGS = 0x03000000;

Expand Down
102 changes: 100 additions & 2 deletions src/inc/msquic.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,15 +264,15 @@ typedef enum QUIC_DATAGRAM_SEND_STATE {
#define QUIC_DATAGRAM_SEND_STATE_IS_FINAL(State) \
((State) >= QUIC_DATAGRAM_SEND_LOST_DISCARDED)

#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES

typedef enum QUIC_EXECUTION_CONFIG_FLAGS {
QUIC_EXECUTION_CONFIG_FLAG_NONE = 0x0000,
#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
QUIC_EXECUTION_CONFIG_FLAG_QTIP = 0x0001,
QUIC_EXECUTION_CONFIG_FLAG_RIO = 0x0002,
QUIC_EXECUTION_CONFIG_FLAG_XDP = 0x0004,
QUIC_EXECUTION_CONFIG_FLAG_NO_IDEAL_PROC = 0x0008,
QUIC_EXECUTION_CONFIG_FLAG_HIGH_PRIORITY = 0x0010,
#endif
} QUIC_EXECUTION_CONFIG_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(QUIC_EXECUTION_CONFIG_FLAGS)
Expand All @@ -293,6 +293,100 @@ typedef struct QUIC_EXECUTION_CONFIG {
#define QUIC_EXECUTION_CONFIG_MIN_SIZE \
(uint32_t)FIELD_OFFSET(QUIC_EXECUTION_CONFIG, ProcessorList)

#ifndef _KERNEL_MODE

//
// Execution Context abstraction, which allows the application layer to
// completely control execution of all MsQuic work.
//

typedef struct QUIC_EXECUTION_CONTEXT_CONFIG {
uint32_t IdealProcessor;
uint32_t PollingIdleTimeoutUs;
QUIC_EVENTQ* EventQ;
} QUIC_EXECUTION_CONTEXT_CONFIG;

typedef struct QUIC_EXECUTION_CONTEXT QUIC_EXECUTION_CONTEXT;

//
// This is called create the execution contexts.
//
typedef
_IRQL_requires_max_(PASSIVE_LEVEL)
QUIC_STATUS
(QUIC_API * QUIC_EXECUTION_CREATE_FN)(
_In_ QUIC_EXECUTION_CONFIG_FLAGS Flags, // Used for datapath type
_In_ uint32_t Count,
_In_reads_(Count) QUIC_EXECUTION_CONTEXT_CONFIG* Configs,
_Out_writes_(Count) QUIC_EXECUTION_CONTEXT** ExecutionContexts
);

//
// This is called to delete the execution contexts.
//
typedef
_IRQL_requires_max_(PASSIVE_LEVEL)
void
(QUIC_API * QUIC_EXECUTION_DELETE_FN)(
_In_ uint32_t Count,
_In_reads_(Count) QUIC_EXECUTION_CONTEXT** ExecutionContexts
);

//
// This is called to allow MsQuic to process any polling work. It returns the
// number of milliseconds until the next scheduled timer expiration.
//
// TODO: Should it return an indication for if we should yield?
//
typedef
_IRQL_requires_max_(PASSIVE_LEVEL)
uint32_t
(QUIC_API * QUIC_EXECUTION_POLL_FN)(
_In_ QUIC_EXECUTION_CONTEXT* ExecutionContext
);

//
// This is used to check if a completion event belongs to MsQuic or not.
//
// TODO: This makes certain assumptions for the layout of completion event
// payload. How do we generalize this?
//
typedef
_IRQL_requires_max_(PASSIVE_LEVEL)
BOOLEAN
(QUIC_API * QUIC_EXECUTION_CHECK_CQE_FN)(
_In_ const QUIC_CQE* Cqe
);

//
// This is called to allow MsQuic to process any completions that have occurred.
//
typedef
_IRQL_requires_max_(PASSIVE_LEVEL)
uint32_t
(QUIC_API * QUIC_EXECUTION_PROCESS_CQE_FN)(
_In_ QUIC_EXECUTION_CONTEXT* ExecutionContext,
_In_reads_(CqeCount) QUIC_CQE* Cqes,
_In_ uint32_t CqeCount
);

//
// The table of execution functions.
//
typedef struct QUIC_EXECUTION_TABLE {

QUIC_EXECUTION_CREATE_FN ExecutionCreate;
QUIC_EXECUTION_DELETE_FN ExecutionDelete;
QUIC_EXECUTION_POLL_FN Poll;
QUIC_EXECUTION_CHECK_CQE_FN CheckCqe;
QUIC_EXECUTION_PROCESS_CQE_FN ProcessCqe;

} QUIC_EXECUTION_TABLE;

#endif // _KERNEL_MODE

#endif // QUIC_API_ENABLE_PREVIEW_FEATURES

typedef struct QUIC_REGISTRATION_CONFIG { // All fields may be NULL/zero.
const char* AppName;
QUIC_EXECUTION_PROFILE ExecutionProfile;
Expand Down Expand Up @@ -857,6 +951,10 @@ void
#endif
#define QUIC_PARAM_GLOBAL_TLS_PROVIDER 0x0100000A // QUIC_TLS_PROVIDER
#define QUIC_PARAM_GLOBAL_STATELESS_RESET_KEY 0x0100000B // uint8_t[] - Array size is QUIC_STATELESS_RESET_KEY_LENGTH
#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
#define QUIC_PARAM_GLOBAL_EXECUTION_TABLE 0x0100000C // QUIC_EXECUTION_TABLE
#endif

//
// Parameters for Registration.
//
Expand Down
20 changes: 20 additions & 0 deletions src/inc/msquic_posix.h
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,26 @@ QuicAddrToString(
return TRUE;
}

//
// Event Queue Abstraction
//

#if __linux__ // epoll

typedef int QUIC_EVENTQ;
typedef struct epoll_event QUIC_CQE;

#elif __APPLE__ || __FreeBSD__ // kqueue

typedef int QUIC_EVENTQ;
typedef struct kevent QUIC_CQE;

#else

#error Unsupported Platform

#endif

#if defined(__cplusplus)
}
#endif
Expand Down
7 changes: 7 additions & 0 deletions src/inc/msquic_winuser.h
Original file line number Diff line number Diff line change
Expand Up @@ -373,4 +373,11 @@ QuicAddrToString(

#endif // WINAPI_FAMILY != WINAPI_FAMILY_GAMES

//
// Event Queue Abstraction
//

typedef HANDLE QUIC_EVENTQ;
typedef OVERLAPPED_ENTRY QUIC_CQE;

#endif // _MSQUIC_WINUSER_
Loading