Page MenuHomeFreeBSD

Widen aflags to 16 bits.
ClosedPublic

Authored by markj on Nov 15 2019, 11:47 PM.
Tags
None
Referenced Files
Unknown Object (File)
Aug 4 2025, 2:12 AM
Unknown Object (File)
Aug 1 2025, 9:07 PM
Unknown Object (File)
Jul 11 2025, 12:52 AM
Unknown Object (File)
Jun 22 2025, 6:03 PM
Unknown Object (File)
Jun 22 2025, 8:43 AM
Unknown Object (File)
Jun 20 2025, 9:13 PM
Unknown Object (File)
Jun 16 2025, 12:36 AM
Unknown Object (File)
Jun 15 2025, 12:05 PM
Subscribers

Details

Summary

We are now out of aflags bits, whereas the "flags" field only makes use
of five of its sixteen bits. I have no intention of adding a new aflag
in the near future, but would like to combine the aflags, queue and
act_count fields into a single atomically updated word. This will allow
vm_page_pqstate_cmpset() to become much simpler and is a step towards
eliminating the use of the page lock array in updating per-page queue
state.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

sys/vm/vm_page.h
438 ↗(On Diff #64413)

Perhaps this is an opportunity to renumber a bit and use 0x02 for something.

719 ↗(On Diff #64413)

Would a typedef for these uses of uint16_t be appropriate?

kib added inline comments.
sys/vm/vm_page.h
239 ↗(On Diff #64413)

Change the type to uint8_t since you are moving the line ?

This revision is now accepted and ready to land.Nov 16 2019, 10:29 AM
markj added inline comments.
sys/vm/vm_page.h
438 ↗(On Diff #64413)

I think that would be fine since I am changing the layout of struct vm_page anyway.

719 ↗(On Diff #64413)

I think so, but in the next patch I will actually add a

typedef struct vm_page_astate {
    uint16_t flags;
    uint8_t queue;
    uint8_t act_count;
} vm_page_astate_t;

and pass that around instead, so I do not think there is much value in adding a typedef specifically for the flags.

markj marked an inline comment as done.

Address feedback.

This revision now requires review to proceed.Nov 16 2019, 5:42 PM
This revision is now accepted and ready to land.Nov 16 2019, 6:17 PM
This revision was automatically updated to reflect the committed changes.