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)
Tue, Jan 24, 2:44 PM
Unknown Object (File)
Dec 15 2022, 8:10 PM

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

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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.