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)
Jan 29 2024, 10:28 AM
Unknown Object (File)
Jan 29 2024, 5:44 AM
Unknown Object (File)
Jan 17 2024, 4:02 PM
Unknown Object (File)
Jan 12 2024, 8:28 AM
Unknown Object (File)
Dec 23 2023, 1:19 AM
Unknown Object (File)
Dec 7 2023, 10:00 PM
Unknown Object (File)
Nov 21 2023, 8:08 AM
Unknown Object (File)
Jun 30 2023, 11:21 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.