mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-25 11:32:24 +00:00
tools/rtla: Improve exception handling in timerlat_load.py
The enhancements made to timerlat_load.py are intended to improve the script's exception handling.
Summary of the changes:
- Specific exceptions are now caught for CPU affinity and priority
settings, with clearer error messages provided.
- The timerlat file descriptor opening now includes handling for
PermissionError and OSError, with informative messages.
- In the infinite loop, generic exceptions have been replaced with
specific types like KeyboardInterrupt and IOError, improving feedback.
Before:
$ sudo python timerlat_load.py 122
Error setting affinity
After:
$ sudo python timerlat_load.py 122
Error setting affinity: [Errno 22] Invalid argument
Before:
$ sudo python timerlat_load.py 1 -p 950
Error setting priority
After:
$ sudo python timerlat_load.py 1 -p 950
Error setting priority: [Errno 22] Invalid argument
Before:
$ python timerlat_load.py 1
Error opening timerlat fd, did you run timerlat -U?
After:
$ python timerlat_load.py 1
Permission denied. Please check your access rights.
Cc: "lgoncalv@redhat.com" <lgoncalv@redhat.com>
Cc: "jkacur@redhat.com" <jkacur@redhat.com>
Link: https://lore.kernel.org/Q_k1s4hBtUy2px8ou0QKenjEK2_T_LoV8IxAE79aBakBogb-7uHp2fpET3oWtI1t3dy8uKjWeRzQOdKNzIzOOpyM4OjutJOriZ9TrGY6b-g=@protonmail.com
Signed-off-by: Furkan Onder <furkanonder@protonmail.com>
Reviewed-by: Tomas Glozar <tglozar@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
committed by
Steven Rostedt (Google)
parent
bd26818343
commit
4d8c1ba079
@@ -31,43 +31,48 @@ args = parser.parse_args()
|
||||
|
||||
try:
|
||||
affinity_mask = {args.cpu}
|
||||
except:
|
||||
print("Invalid cpu: " + args.cpu)
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
os.sched_setaffinity(0, affinity_mask)
|
||||
except:
|
||||
print("Error setting affinity")
|
||||
exit(1)
|
||||
except Exception as e:
|
||||
print(f"Error setting affinity: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if args.prio:
|
||||
try:
|
||||
param = os.sched_param(args.prio)
|
||||
os.sched_setscheduler(0, os.SCHED_FIFO, param)
|
||||
except:
|
||||
print("Error setting priority")
|
||||
exit(1)
|
||||
except Exception as e:
|
||||
print(f"Error setting priority: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
timerlat_path = f"/sys/kernel/tracing/osnoise/per_cpu/cpu{args.cpu}/timerlat_fd"
|
||||
timerlat_fd = open(timerlat_path, 'r')
|
||||
except:
|
||||
except PermissionError:
|
||||
print("Permission denied. Please check your access rights.")
|
||||
sys.exit(1)
|
||||
except OSError:
|
||||
print("Error opening timerlat fd, did you run timerlat -U?")
|
||||
exit(1)
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
data_fd = open("/dev/full", 'r')
|
||||
except:
|
||||
print("Error opening data fd")
|
||||
except Exception as e:
|
||||
print(f"Error opening data fd: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
while True:
|
||||
try:
|
||||
timerlat_fd.read(1)
|
||||
data_fd.read(20 * 1024 * 1024)
|
||||
except:
|
||||
except KeyboardInterrupt:
|
||||
print("Leaving")
|
||||
break
|
||||
except IOError as e:
|
||||
print(f"I/O error occurred: {e}")
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"Unexpected error: {e}")
|
||||
break
|
||||
|
||||
timerlat_fd.close()
|
||||
data_fd.close()
|
||||
|
||||
Reference in New Issue
Block a user