Visitar URL original
Add groupCount/groupMasks to CACHE_RELATIONSHIP by dbwiddis · Pull Request #1720 · java-native-access/jna · GitHub
Skip to content

Add groupCount/groupMasks to CACHE_RELATIONSHIP - #1720

Merged
dbwiddis merged 1 commit into
java-native-access:masterfrom
dbwiddis:fix-cache-relationship-groupcount
May 10, 2026
Merged

dbwiddis merged 1 commit into
java-native-access:masterfrom
dbwiddis:fix-cache-relationship-groupcount

Conversation

@dbwiddis

Copy link
Copy Markdown
Contributor

Add groupCount/groupMasks to CACHE_RELATIONSHIP

The Windows CACHE_RELATIONSHIP struct was updated (Windows Server 2022 / 21H2) to repurpose 2 of its 20 reserved bytes as a GroupCount field and replace the single GroupMask with a variable-length GroupMasks array. This is the same change documented in #1324 for NUMA_NODE_RELATIONSHIP.

Changes

  • Shrink reserved from 20 to 18 bytes
  • Add groupCount (short) field
  • Add groupMasks (GROUP_AFFINITY[]) array
  • Retain groupMask as a public compatibility field (populated from groupMasks[0])
  • Override read() to dynamically size the array based on groupCount
  • Override getFieldList() to exclude the compatibility groupMask field from structure validation

Sources

Backward compatibility

On older Windows versions where GroupCount is 0 (the bytes were previously reserved/zeroed), the read() override forces a minimum array size of 1 and copies the value to groupMask, preserving existing behavior.

Closes #1674

Closes java-native-access#1674

The Windows CACHE_RELATIONSHIP struct was updated to use 2 of its
reserved bytes for a GroupCount field and replace the single
GroupMask with a variable-length GroupMasks array, matching the
same change previously made to NUMA_NODE_RELATIONSHIP.

Shrink reserved from 20 to 18 bytes, add groupCount (short) and
groupMasks array with a read() override to handle both old and new
struct layouts.
@dbwiddis
dbwiddis force-pushed the fix-cache-relationship-groupcount branch from 70cfa71 to 79e2aa5 Compare May 10, 2026 14:27

@matthiasblaesing matthiasblaesing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense to me. Thank you.

@dbwiddis
dbwiddis merged commit e75a0bf into java-native-access:master May 10, 2026
12 checks passed
@dbwiddis
dbwiddis deleted the fix-cache-relationship-groupcount branch May 10, 2026 21:13
markharding pushed a commit to futo-org/Harbor that referenced this pull request Oct 23, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [net.java.dev.jna:jna](https://github.com/java-native-access/jna) | `5.18.1` → `5.19.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/net.java.dev.jna:jna/5.19.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/net.java.dev.jna:jna/5.18.1/5.19.1?slim=true) |

---

### Release Notes

<details>
<summary>java-native-access/jna (net.java.dev.jna:jna)</summary>

### [`v5.19.1`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5191)

[Compare Source](java-native-access/jna@5.19.0...5.19.1)

\==============

## Bug Fixes

- [#&#8203;1730](java-native-access/jna#1730): Replace usage of `MethodHandle` with reflection to restore support for older Android releases - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).

### [`v5.19.0`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5190)

[Compare Source](java-native-access/jna@5.18.1...5.19.0)

\==============

## Features

- [#&#8203;1696](java-native-access/jna#1696): Add `LARGE_INTEGER.ByValue` to `LARGE_INTEGER` in `WinNT.java` - [@&#8203;baier233](https://github.com/baier233).
- [#&#8203;1697](java-native-access/jna#1697): Add WlanApi module - [@&#8203;eranl](https://github.com/eranl).
- [#&#8203;1718](java-native-access/jna#1718): Add `Cups` to `c.s.j.p.unix` providing CUPS printing system bindings for destinations, jobs, options, and server configuration - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1720](java-native-access/jna#1720): Add `groupCount` and `groupMasks` fields to `CACHE_RELATIONSHIP` in `c.s.j.p.win32.WinNT`, matching the updated Windows struct layout - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1719](java-native-access/jna#1719): Add `CoreGraphics` to `c.s.j.p.mac` with Quartz Window Services and Display Services bindings; implement `getAllWindows()` in `MacWindowUtils` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1723](java-native-access/jna#1723): Add `ProcFdInfo`, `InSockInfo`, `TcpSockInfo`, `proc_pidfdinfo`, `statfs64`, and `vm_deallocate` to `c.s.j.p.mac.SystemB` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1725](java-native-access/jna#1725): Add `BluetoothApis` to `c.s.j.p.win32` providing Bluetooth device and radio enumeration via `BluetoothFindFirstRadio`, `BluetoothFindFirstDevice`, and related functions - [@&#8203;dbwiddis](https://github.com/dbwiddis).

## Bug Fixes

- [#&#8203;1644](java-native-access/jna#1644): Fix bug in VARDESC and TYPEDESC causing an illegal memory access - [@&#8203;lwahonen](https://github.com/lwahonen)
- [#&#8203;1715](java-native-access/jna#1715): Fix `UdevDevice.getSysname()` calling `udev_device_get_syspath` instead of `udev_device_get_sysname` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1721](java-native-access/jna#1721): Fix switched `serverName`/`domainName` arguments in `Netapi32Util#getDCName` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1722](java-native-access/jna#1722): Fix `Advapi32#RegisterServiceCtrlHandler` using wrong `Handler` type - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1636](java-native-access/jna#1636): Drop hard dependency on java.lang.SecurityManager/java.security.AccessController - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).
- [#&#8203;1724](java-native-access/jna#1724): Fix `host_page_size` in `c.s.j.p.mac.SystemB` and `getxattr`/`setxattr`/`listxattr` in `c.s.j.p.mac.XAttr` using `long` instead of pointer-sized types for `size_t`/`ssize_t` parameters - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1727](java-native-access/jna#1727): Include DragonFlyBSD in `NativeLibrary` versioned library resolution, libc special-case loading, and 64-bit search paths - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1709](java-native-access/jna#1709): Rebuild native library for OpenBSD 7.9 x86-64, drop OpenBSD x86 - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - "before 9am on tuesday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE3NS4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSJdfQ==-->

Reviewed-on: https://code.futo.org/harbor/harbor/pulls/1820
Reviewed-by: Mark Harding <mark@futo.org>
markharding pushed a commit to futo-org/Harbor that referenced this pull request Oct 29, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [net.java.dev.jna:jna](https://github.com/java-native-access/jna) | `5.18.1` → `5.19.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/net.java.dev.jna:jna/5.19.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/net.java.dev.jna:jna/5.18.1/5.19.1?slim=true) |

---

### Release Notes

<details>
<summary>java-native-access/jna (net.java.dev.jna:jna)</summary>

### [`v5.19.1`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5191)

[Compare Source](java-native-access/jna@5.19.0...5.19.1)

\==============

## Bug Fixes

- [#&#8203;1730](java-native-access/jna#1730): Replace usage of `MethodHandle` with reflection to restore support for older Android releases - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).

### [`v5.19.0`](https://github.com/java-native-access/jna/blob/HEAD/CHANGES.md#Release-5190)

[Compare Source](java-native-access/jna@5.18.1...5.19.0)

\==============

## Features

- [#&#8203;1696](java-native-access/jna#1696): Add `LARGE_INTEGER.ByValue` to `LARGE_INTEGER` in `WinNT.java` - [@&#8203;baier233](https://github.com/baier233).
- [#&#8203;1697](java-native-access/jna#1697): Add WlanApi module - [@&#8203;eranl](https://github.com/eranl).
- [#&#8203;1718](java-native-access/jna#1718): Add `Cups` to `c.s.j.p.unix` providing CUPS printing system bindings for destinations, jobs, options, and server configuration - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1720](java-native-access/jna#1720): Add `groupCount` and `groupMasks` fields to `CACHE_RELATIONSHIP` in `c.s.j.p.win32.WinNT`, matching the updated Windows struct layout - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1719](java-native-access/jna#1719): Add `CoreGraphics` to `c.s.j.p.mac` with Quartz Window Services and Display Services bindings; implement `getAllWindows()` in `MacWindowUtils` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1723](java-native-access/jna#1723): Add `ProcFdInfo`, `InSockInfo`, `TcpSockInfo`, `proc_pidfdinfo`, `statfs64`, and `vm_deallocate` to `c.s.j.p.mac.SystemB` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1725](java-native-access/jna#1725): Add `BluetoothApis` to `c.s.j.p.win32` providing Bluetooth device and radio enumeration via `BluetoothFindFirstRadio`, `BluetoothFindFirstDevice`, and related functions - [@&#8203;dbwiddis](https://github.com/dbwiddis).

## Bug Fixes

- [#&#8203;1644](java-native-access/jna#1644): Fix bug in VARDESC and TYPEDESC causing an illegal memory access - [@&#8203;lwahonen](https://github.com/lwahonen)
- [#&#8203;1715](java-native-access/jna#1715): Fix `UdevDevice.getSysname()` calling `udev_device_get_syspath` instead of `udev_device_get_sysname` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1721](java-native-access/jna#1721): Fix switched `serverName`/`domainName` arguments in `Netapi32Util#getDCName` - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1722](java-native-access/jna#1722): Fix `Advapi32#RegisterServiceCtrlHandler` using wrong `Handler` type - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1636](java-native-access/jna#1636): Drop hard dependency on java.lang.SecurityManager/java.security.AccessController - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).
- [#&#8203;1724](java-native-access/jna#1724): Fix `host_page_size` in `c.s.j.p.mac.SystemB` and `getxattr`/`setxattr`/`listxattr` in `c.s.j.p.mac.XAttr` using `long` instead of pointer-sized types for `size_t`/`ssize_t` parameters - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1727](java-native-access/jna#1727): Include DragonFlyBSD in `NativeLibrary` versioned library resolution, libc special-case loading, and 64-bit search paths - [@&#8203;dbwiddis](https://github.com/dbwiddis).
- [#&#8203;1709](java-native-access/jna#1709): Rebuild native library for OpenBSD 7.9 x86-64, drop OpenBSD x86 - [@&#8203;matthiasblaesing](https://github.com/matthiasblaesing).

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - "before 9am on tuesday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzMuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE3NS4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSJdfQ==-->

Reviewed-on: https://code.futo.org/harbor/harbor/pulls/1820
Reviewed-by: Mark Harding <mark@futo.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

WinNT CACHE_RELATIONSHIP uses 2 reserved bytes for Group Count

2 participants