[etherlab-dev] ec_lock_* vs. ec_ioctl_lock in master/ioctl.c

Esben Haabendal esben.haabendal at gmail.com
Tue Feb 27 16:39:10 CET 2018


Hi

I have been fixing a number of locking related issues, and have a hard
time figuring out how to handle locking in general, and in
master/ioctl.c in particular.

As of patch
base/0017-Master-locks-to-avoid-corrupted-datagram-queue.patch
there is now the macro pair of
ec_ioctl_lock_down_interruptible() and ec_ioctl_lock_up(), which maps to
ec_lock_down_interruptible() and ec_lock_up() for the non RTDM use-case.

But looking at the master/ioctl.c file as of patchset version 20171108,
there are the following number of calls:

8   ec_lock_down()
52  ec_lock_down_interruptible()
129 ec_lock_up()
6   ec_ioctl_lock_up()
4   ec_ioctl_lock_down_interruptible()

When should the ec_lock_* functions be called directly, and when should
they be wrapped (and thus compiled out for RTDM)?

And how is this supposed to work for RTDM in the first place?
I mean, there are code outside of ioctl.c which is called from ioctl.c
which are taking locks.  Isn't this kind of defeating the purpose of
this idea?

Also, as far as I can see, EC_IOCTL_RTDM is only defined when compiling
rtdm-ioctl.c.  When and how is master/ioctl.c supposed to be compiled
with EC_IOCTL_RTDM defined?

Best regards,
Esben Haabendal


More information about the etherlab-dev mailing list