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)
Sun, Sep 6, 12:10 AM
Unknown Object (File)
Sat, Sep 5, 5:33 AM
Unknown Object (File)
Fri, Sep 4, 8:12 AM
Unknown Object (File)
Thu, Sep 3, 11:30 AM
Unknown Object (File)
Wed, Sep 2, 6:42 AM
Unknown Object (File)
Tue, Sep 1, 2:05 PM
Unknown Object (File)
Tue, Sep 1, 12:05 PM
Unknown Object (File)
Tue, Sep 1, 7:45 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.