I’m sorry; I included the patch as an attachment in the email without noticing.
--- tools/tracing/rtla/sample/timerlat_load.py.orig 2024-09-22 02:37:14.767832391 +0300 +++ tools/tracing/rtla/sample/timerlat_load.py 2024-09-22 02:37:05.721215367 +0300 @@ -25,50 +25,54 @@ import sys import os parser = argparse.ArgumentParser(description='user-space timerlat thread in Python') -parser.add_argument("cpu", help='CPU to run timerlat thread') -parser.add_argument("-p", "--prio", help='FIFO priority') - +parser.add_argument("cpu", type=int, help='CPU to run timerlat thread') +parser.add_argument("-p", "--prio", type=int, help='FIFO priority') args = parser.parse_args() try: - affinity_mask = { int(args.cpu) } -except: - print("Invalid cpu: " + args.cpu) - exit(1) - -try: - os.sched_setaffinity(0, affinity_mask); -except: - print("Error setting affinity") - exit(1) + affinity_mask = {args.cpu} + os.sched_setaffinity(0, affinity_mask) +except Exception as e: + print(f"Error setting affinity: {e}") + sys.exit(1) -if (args.prio): +if args.prio: try: - param = os.sched_param(int(args.prio)) + 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 = "/sys/kernel/tracing/osnoise/per_cpu/cpu" + args.cpu + "/timerlat_fd" + 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") + data_fd = open("/dev/full", 'r') +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: + data_fd.read(20 * 1024 * 1024) + 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() Sent with Proton Mail secure email. On Thursday, September 26th, 2024 at 7:38 AM, Steven Rostedt <rost...@goodmis.org> wrote: > Hi, > > Thank you for your patch. First, Daniel is unfortunately no longer the > maintainer of this code: > > https://lwn.net/Articles/979912/ > > This patch is not formatted correctly, so it can not even be reviewed. > Please take a look at Submitting Patches: > > https://www.kernel.org/doc/html/v4.17/process/submitting-patches.html > > -- Steve > > > On Sat, 21 Sep 2024 23:43:02 +0000 > furkanonder furkanon...@protonmail.com wrote: > > > The enhancements made to timerlat_load.py focus on improving error > > handling, readability, and overall user experience. These changes aim to > > make the script more robust and easier to maintain while providing clearer > > feedback to users. > > Key modifications include: > > > > Type Declaration in Argument Parsing: > > Added type declarations for command-line arguments in the argument parser. > > This removes the need for manual type checks later in the code, improving > > clarity and safety. > > Before: > > parser.add_argument("cpu", help='CPU to run timerlat thread') > > parser.add_argument("-p", "--prio", help='FIFO priority') > > After: > > parser.add_argument("cpu", type=int, help='CPU to run timerlat thread') > > parser.add_argument("-p", "--prio", type=int, help='FIFO priority') > > > > String Formatting: > > Replaced string concatenation with an f-string to enhancing readability and > > conciseness. > > Before: > > timerlat_path = "/sys/kernel/tracing/osnoise/per_cpu/cpu" + args.cpu + > > "/timerlat_fd" > > After: > > timerlat_path = > > f"/sys/kernel/tracing/osnoise/per_cpu/cpu{args.cpu}/timerlat_fd" > > > > Enhanced Exception Handling and Consistent Error Reporting: > > Specific exceptions are now caught and printed with clearer messages, > > providing context for errors when opening file descriptors. Added exception > > handling for the data file descriptor opening to ensure uniformity across > > the script. > > > > 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. > > > > Changes for the read Infinite Loop: > > The original generic exception clause has been replaced with more specific > > exception types to provide clearer feedback on errors.