> > On Tue, 2022-03-08 at 08:35 +0200, Emmanuel Grumbach via > networkmanager-list wrote: > > I realized I am missing a piece before this. > > I need to be able to get and handle nl80211 events, which means that > > I > > need a thread or event loop or something that listens to the nl80211 > > channel and parses events. The event I need is the end of the > > connection from the CSME side. This brings to the fundamental > > question > > of the threading model in NetworkManager. > > Do we have a sort of event loop? Looks like the NetworkManager runs > > on > > an event loop and very few things run in a different thread, but I > > couldn't really see any clear information about it. > > > Hi, > > > we use a glib mainloop. Read > https://tecnocode.co.uk/2014/03/27/what-is-gmaincontext/ > > There is only one thread (except, that GDBus spawns a worker thread > internally and that we might do a blocking write to sysctl on a thread, > but NM itself is for the most case single threadded). > > In this case, you would poll on the file descriptor. So use > `nm_g_unix_fd_add_source()`. > >
I looked into this and basically I'd have to reimplement event_handler_read_netlink which reads from priv->nlh where I need to read from genl... The pick of priv->nlh and very deep in the code. I guess I could add DELAYED_ACTION_TYPE_READ_NL80211 just like we have DELAYED_ACTION_TYPE_READ_NETLINK and make that call event_handler_read_nl80211 which would set a parameter in the platform so that event_handler_read_netlink will read from genl instead of priv->nlh? Since everything is single thread, that could work? OTOH, it'd mean that the handling of the nl82011 messages would be in nm-linux-platform which isn't desirable either. _______________________________________________ networkmanager-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/networkmanager-list
