Page MenuHomeFreeBSD

linuxkpi: Update `struct irq_work`
ClosedPublic

Authored by dumbbell on Oct 12 2022, 7:12 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Dec 13, 7:46 AM
Unknown Object (File)
Tue, Nov 25, 1:53 AM
Unknown Object (File)
Mon, Nov 24, 5:00 AM
Unknown Object (File)
Thu, Nov 20, 9:42 AM
Unknown Object (File)
Wed, Nov 19, 5:00 PM
Unknown Object (File)
Nov 15 2025, 9:38 PM
Unknown Object (File)
Nov 15 2025, 12:07 AM
Unknown Object (File)
Nov 3 2025, 4:02 AM

Details

Summary

The previous llnode field is moved inside another field node.

This node field is a struct __call_single_node in Linux. Here, we
simply add an anonymous struct with the llnode field inside. That
field's new name is llist now.

struct irq_work was changed in an incompatible way. I'm thinking of adding a
#define beside the new structure so that drivers can check it to determine
how to use it, and thus have a single code base working with multiple versions
of FreeBSD. What do you think?

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

struct irq_work was changed in an incompatible way. I'm thinking of adding a #define beside the new structure so that drivers can check it to determine how to use it, and thus have a single code base working with multiple versions of FreeBSD. What do you think?

Anonymous union of struct node and struct llnode?

I think something like this will work. It's not pretty but kills compilation breakage.

union {
	struct llist_node llnode;
	struct {
		struct llist_node llist;
	} node;
};

Good idea @wulf and @hselasky! I just updated the patch.

This revision is now accepted and ready to land.Nov 5 2022, 5:20 PM
This revision was automatically updated to reflect the committed changes.