From c679713a7292c55364aef2ff4dff272ec385dd36 Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt Date: Fri, 8 Apr 2022 16:44:30 +0200 Subject: bitbake: pyinotify.py: Simplify identification of which event has occurred Use bitwise operators to manipulate the received event mask in _ProcessEvent. Also minor clarification & clean up of the related comments. (Bitbake rev: 2ab60c7be124d928d304ab1fb73f0dbff29964ae) Signed-off-by: Peter Kjellerstedt Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- bitbake/lib/pyinotify.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'bitbake/lib/pyinotify.py') diff --git a/bitbake/lib/pyinotify.py b/bitbake/lib/pyinotify.py index 5c9b6d0fe2..3c5dab0312 100644 --- a/bitbake/lib/pyinotify.py +++ b/bitbake/lib/pyinotify.py @@ -595,24 +595,23 @@ class _ProcessEvent: @type event: Event object @return: By convention when used from the ProcessEvent class: - Returning False or None (default value) means keep on - executing next chained functors (see chain.py example). + executing next chained functors (see chain.py example). - Returning True instead means do not execute next processing functions. @rtype: bool @raise ProcessEventError: Event object undispatchable, unknown event. """ - stripped_mask = event.mask - (event.mask & IN_ISDIR) - # Bitbake hack - we see event masks of 0x6, IN_MODIFY & IN_ATTRIB + stripped_mask = event.mask & ~IN_ISDIR + # Bitbake hack - we see event masks of 0x6, i.e., IN_MODIFY & IN_ATTRIB. # The kernel inotify code can set more than one of the bits in the mask, # fsnotify_change() in linux/fsnotify.h is quite clear that IN_ATTRIB, # IN_MODIFY and IN_ACCESS can arrive together. # This breaks the code below which assume only one mask bit is ever - # set in an event. We don't care about attrib or access in bitbake so drop those - if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ATTRIB): - stripped_mask = stripped_mask - (stripped_mask & IN_ATTRIB) - if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ACCESS): - stripped_mask = stripped_mask - (stripped_mask & IN_ACCESS) + # set in an event. We don't care about attrib or access in bitbake so + # drop those. + if stripped_mask & IN_MODIFY: + stripped_mask &= ~(IN_ATTRIB | IN_ACCESS) maskname = EventsCodes.ALL_VALUES.get(stripped_mask) if maskname is None: -- cgit v1.2.3-54-g00ecf