)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Works for the proprietary rt-kernel from rt-labs."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"See: https://rt-labs.com/product/rt-kernel/"},{"line_number":12,"context_line":"Change-Id: Id2c2e292c15fb17eab25e3d07db05014daa2a2b0"},{"line_number":13,"context_line":"Signed-off-by: Andreas Fritiofson \u003candreas.fritiofson@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"46e38880_f7d3b434","line":11,"updated":"2023-01-20 23:03:26.000000000","message":"weird that we don\u0027t have a doc section to report it. But that\u0027s it!","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"fca656372b560b6d6a8947125e8d7509b1d071e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"28f7e238_d503f8d2","updated":"2021-11-04 09:13:05.000000000","message":"Thanks for the checkup. This has been lying around since at least 2016 so it\u0027s apparently not up to date wrt the conventions in the rtos implementations and openocd as a whole.","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5c20bae9_520fd87e","updated":"2021-11-08 18:42:00.000000000","message":"I noticed some potential problem with the stacking now that I started using this again, some tasks do not show any backtrace in gdb.","commit_id":"fe55b046e684eeb8f8963c6e3790dbfc3263a6a1"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f0374137_35b72105","updated":"2021-11-08 19:54:53.000000000","message":"Few minor comments, then I\u0027m ok.\nNot expert on this rtos code, so would be nice to have another review","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b72c1e72a3021a44efb5e4d015384f2641690693","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"111078c4_665c436f","updated":"2023-01-21 10:15:23.000000000","message":"thanks!","commit_id":"6b6a21f5f51a2146f1a26616506826be9c7b51c9"}],"src/rtos/rtkernel.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":31,"context_line":"#include \"target/armv7m.h\""},{"line_number":32,"context_line":"#include \"target/cortex_m.h\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"#define ST_DEAD     (1 \u003c\u003c 0)    /* Task is waiting to be deleted */"},{"line_number":35,"context_line":"#define ST_WAIT     (1 \u003c\u003c 1)    /* Task is blocked: */"},{"line_number":36,"context_line":"#define ST_SEM      (1 \u003c\u003c 2)    /*  on semaphore */"},{"line_number":37,"context_line":"#define ST_MTX      (1 \u003c\u003c 3)    /*  on mutex */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e1f32bcd_5bc85cab","line":34,"updated":"2021-11-03 18:07:36.000000000","message":"BIT(0) ?","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":31,"context_line":"#include \"target/armv7m.h\""},{"line_number":32,"context_line":"#include \"target/cortex_m.h\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"#define ST_DEAD     (1 \u003c\u003c 0)    /* Task is waiting to be deleted */"},{"line_number":35,"context_line":"#define ST_WAIT     (1 \u003c\u003c 1)    /* Task is blocked: */"},{"line_number":36,"context_line":"#define ST_SEM      (1 \u003c\u003c 2)    /*  on semaphore */"},{"line_number":37,"context_line":"#define ST_MTX      (1 \u003c\u003c 3)    /*  on mutex */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7614c217_b507da1d","line":34,"in_reply_to":"e1f32bcd_5bc85cab","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":46,"context_line":"#define ST_TT_YIELD (1 \u003c\u003c 12)   /* Time triggered task that yields */"},{"line_number":47,"context_line":"#define ST_CREATE   (1 \u003c\u003c 13)   /* Task was created by task_create() */"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"#define rtkernel_STRUCT(int_type, ptr_type, list_prev_offset)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"struct rtkernel_params {"},{"line_number":52,"context_line":"\tconst char *target_name;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e6de3252_fc48475a","line":49,"updated":"2021-11-03 18:07:36.000000000","message":"never used and CamelCase. Can be removed?","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":46,"context_line":"#define ST_TT_YIELD (1 \u003c\u003c 12)   /* Time triggered task that yields */"},{"line_number":47,"context_line":"#define ST_CREATE   (1 \u003c\u003c 13)   /* Task was created by task_create() */"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"#define rtkernel_STRUCT(int_type, ptr_type, list_prev_offset)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"struct rtkernel_params {"},{"line_number":52,"context_line":"\tconst char *target_name;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"830e18a0_fa67eb4a","line":49,"in_reply_to":"e6de3252_fc48475a","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":70,"context_line":"\t},"},{"line_number":71,"context_line":"};"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#define RTKERNEL_NUM_PARAMS ((int)(sizeof(rtkernel_params_list)/sizeof(struct rtkernel_params)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"static bool rtkernel_detect_rtos(struct target *target);"},{"line_number":76,"context_line":"static int rtkernel_create(struct target *target);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3f731e67_76599d00","line":73,"updated":"2021-11-03 18:07:36.000000000","message":"#define RTKERNEL_NUM_PARAMS ARRAY_SIZE(rtkernel_params_list)","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":70,"context_line":"\t},"},{"line_number":71,"context_line":"};"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#define RTKERNEL_NUM_PARAMS ((int)(sizeof(rtkernel_params_list)/sizeof(struct rtkernel_params)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"static bool rtkernel_detect_rtos(struct target *target);"},{"line_number":76,"context_line":"static int rtkernel_create(struct target *target);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7efcb7f1_c8ffaea2","line":73,"in_reply_to":"3f731e67_76599d00","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":125,"context_line":"\tint new_thread_count \u003d rtos-\u003ethread_count + 1;"},{"line_number":126,"context_line":"\tstruct thread_detail *new_thread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":127,"context_line":"\t\t\tnew_thread_count * sizeof(struct thread_detail));"},{"line_number":128,"context_line":"\tif (new_thread_details \u003d\u003d NULL) {"},{"line_number":129,"context_line":"\t\tLOG_ERROR(\"Error growing memory to %d threads\", new_thread_count);"},{"line_number":130,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":131,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f079e78e_d472a413","line":128,"updated":"2021-11-03 18:07:36.000000000","message":"no NULL comparison; if (!new_thread_details) {","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":125,"context_line":"\tint new_thread_count \u003d rtos-\u003ethread_count + 1;"},{"line_number":126,"context_line":"\tstruct thread_detail *new_thread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":127,"context_line":"\t\t\tnew_thread_count * sizeof(struct thread_detail));"},{"line_number":128,"context_line":"\tif (new_thread_details \u003d\u003d NULL) {"},{"line_number":129,"context_line":"\t\tLOG_ERROR(\"Error growing memory to %d threads\", new_thread_count);"},{"line_number":130,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":131,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d794e649_e9cc205f","line":128,"in_reply_to":"f079e78e_d472a413","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":148,"context_line":"\t\tLOG_ERROR(\"Error reading task name from target\");"},{"line_number":149,"context_line":"\t\treturn retval;"},{"line_number":150,"context_line":"\t}"},{"line_number":151,"context_line":"\ttmp_str[sizeof(tmp_str)-1] \u003d \u0027\\0\u0027;"},{"line_number":152,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6e7566f1_d0d8e808","line":151,"updated":"2021-11-03 18:07:36.000000000","message":"add space around \u0027-\u0027","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":148,"context_line":"\t\tLOG_ERROR(\"Error reading task name from target\");"},{"line_number":149,"context_line":"\t\treturn retval;"},{"line_number":150,"context_line":"\t}"},{"line_number":151,"context_line":"\ttmp_str[sizeof(tmp_str)-1] \u003d \u0027\\0\u0027;"},{"line_number":152,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"78188822_a8910bbb","line":151,"in_reply_to":"6e7566f1_d0d8e808","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":169,"context_line":"\tchar state_str[64] \u003d \"\";"},{"line_number":170,"context_line":"\tif (state \u0026 ST_TT)"},{"line_number":171,"context_line":"\t\tstrcat(state_str, \"TT|\");"},{"line_number":172,"context_line":"\tif (task \u003d\u003d current_task)"},{"line_number":173,"context_line":"\t\tstrcat(state_str, \"RUN\");"},{"line_number":174,"context_line":"\telse {"},{"line_number":175,"context_line":"\t\tif (state \u003d\u003d ST_TT)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6b2c75c1_84e8bd1b","line":172,"updated":"2021-11-03 18:07:36.000000000","message":"Add {} at each arm of if/then/else","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\tchar state_str[64] \u003d \"\";"},{"line_number":170,"context_line":"\tif (state \u0026 ST_TT)"},{"line_number":171,"context_line":"\t\tstrcat(state_str, \"TT|\");"},{"line_number":172,"context_line":"\tif (task \u003d\u003d current_task)"},{"line_number":173,"context_line":"\t\tstrcat(state_str, \"RUN\");"},{"line_number":174,"context_line":"\telse {"},{"line_number":175,"context_line":"\t\tif (state \u003d\u003d ST_TT)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"bcde2c47_a8cb222a","line":172,"in_reply_to":"6b2c75c1_84e8bd1b","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":218,"context_line":"\t\treturn retval;"},{"line_number":219,"context_line":"\t}"},{"line_number":220,"context_line":"\tif (magic !\u003d rtos-\u003esymbols[sym___val_task_magic].address) {"},{"line_number":221,"context_line":"\t\tLOG_ERROR(\"Invalid task found (magic\u003d0x%\"PRIx32\")\", magic);"},{"line_number":222,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":223,"context_line":"\t}"},{"line_number":224,"context_line":"\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3883a6af_90adbda0","line":221,"updated":"2021-11-03 18:07:36.000000000","message":"add space around PRIx32","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":218,"context_line":"\t\treturn retval;"},{"line_number":219,"context_line":"\t}"},{"line_number":220,"context_line":"\tif (magic !\u003d rtos-\u003esymbols[sym___val_task_magic].address) {"},{"line_number":221,"context_line":"\t\tLOG_ERROR(\"Invalid task found (magic\u003d0x%\"PRIx32\")\", magic);"},{"line_number":222,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":223,"context_line":"\t}"},{"line_number":224,"context_line":"\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c0755ec4_fc816632","line":221,"in_reply_to":"3883a6af_90adbda0","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"static int rtkernel_update_threads(struct rtos *rtos)"},{"line_number":228,"context_line":"{"},{"line_number":229,"context_line":"\tint retval;"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"\t/* wipe out previous thread details if any */"},{"line_number":232,"context_line":"\t/* do this first because rtos layer does not check our retval */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"81c8885b_de91f563","line":229,"updated":"2021-11-03 18:07:36.000000000","message":"move declaration at first use","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"static int rtkernel_update_threads(struct rtos *rtos)"},{"line_number":228,"context_line":"{"},{"line_number":229,"context_line":"\tint retval;"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"\t/* wipe out previous thread details if any */"},{"line_number":232,"context_line":"\t/* do this first because rtos layer does not check our retval */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1bf2a413_6db5e9c8","line":229,"in_reply_to":"81c8885b_de91f563","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":233,"context_line":"\trtos_free_threadlist(rtos);"},{"line_number":234,"context_line":"\trtos-\u003ecurrent_thread \u003d 0;"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"\tif (rtos-\u003esymbols \u003d\u003d NULL) {"},{"line_number":237,"context_line":"\t\tLOG_ERROR(\"No symbols for rt-kernel\");"},{"line_number":238,"context_line":"\t\treturn -3;"},{"line_number":239,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"01be8f0e_8edeee2f","line":236,"updated":"2021-11-03 18:07:36.000000000","message":"no NULL comparison","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":233,"context_line":"\trtos_free_threadlist(rtos);"},{"line_number":234,"context_line":"\trtos-\u003ecurrent_thread \u003d 0;"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"\tif (rtos-\u003esymbols \u003d\u003d NULL) {"},{"line_number":237,"context_line":"\t\tLOG_ERROR(\"No symbols for rt-kernel\");"},{"line_number":238,"context_line":"\t\treturn -3;"},{"line_number":239,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2718c1d9_07394a0b","line":236,"in_reply_to":"01be8f0e_8edeee2f","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":247,"context_line":"\t\tLOG_ERROR(\"Error reading current task\");"},{"line_number":248,"context_line":"\t\treturn retval;"},{"line_number":249,"context_line":"\t}"},{"line_number":250,"context_line":"\tLOG_DEBUG(\"current task is 0x%\"PRIx32, current_task);"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"\tretval \u003d rtkernel_verify_task(rtos, current_task);"},{"line_number":253,"context_line":"\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"fa3300c2_08f82c23","line":250,"updated":"2021-11-03 18:07:36.000000000","message":"add space before PRIx32","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":247,"context_line":"\t\tLOG_ERROR(\"Error reading current task\");"},{"line_number":248,"context_line":"\t\treturn retval;"},{"line_number":249,"context_line":"\t}"},{"line_number":250,"context_line":"\tLOG_DEBUG(\"current task is 0x%\"PRIx32, current_task);"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"\tretval \u003d rtkernel_verify_task(rtos, current_task);"},{"line_number":253,"context_line":"\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"65325e5c_124f43aa","line":250,"in_reply_to":"fa3300c2_08f82c23","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"\t/* loop through kernel task list */"},{"line_number":259,"context_line":"\tuint32_t chain \u003d rtos-\u003esymbols[sym_os_state].address + rtos-\u003esymbols[sym___off_os_state2chain].address;"},{"line_number":260,"context_line":"\tLOG_DEBUG(\"chain start at 0x%\"PRIx32, chain);"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\tuint32_t next \u003d chain;"},{"line_number":263,"context_line":"\tfor (;;) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"ce34531f_510acff3","line":260,"updated":"2021-11-03 18:07:36.000000000","message":"space before PRIx32","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"\t/* loop through kernel task list */"},{"line_number":259,"context_line":"\tuint32_t chain \u003d rtos-\u003esymbols[sym_os_state].address + rtos-\u003esymbols[sym___off_os_state2chain].address;"},{"line_number":260,"context_line":"\tLOG_DEBUG(\"chain start at 0x%\"PRIx32, chain);"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\tuint32_t next \u003d chain;"},{"line_number":263,"context_line":"\tfor (;;) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9c9c016f_7667ea2c","line":260,"in_reply_to":"ce34531f_510acff3","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":293,"context_line":"\t\tstruct rtos_reg **reg_list, int *num_regs)"},{"line_number":294,"context_line":"{"},{"line_number":295,"context_line":"\tint retval;"},{"line_number":296,"context_line":"\tconst struct rtkernel_params *param;"},{"line_number":297,"context_line":"\tuint32_t stack_ptr \u003d 0;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tif (rtos \u003d\u003d NULL)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c64c845a_0c3d91fa","line":296,"updated":"2021-11-03 18:07:36.000000000","message":"declare retval and param at the first use","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":293,"context_line":"\t\tstruct rtos_reg **reg_list, int *num_regs)"},{"line_number":294,"context_line":"{"},{"line_number":295,"context_line":"\tint retval;"},{"line_number":296,"context_line":"\tconst struct rtkernel_params *param;"},{"line_number":297,"context_line":"\tuint32_t stack_ptr \u003d 0;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tif (rtos \u003d\u003d NULL)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"816eab89_17bcf347","line":296,"in_reply_to":"c64c845a_0c3d91fa","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":296,"context_line":"\tconst struct rtkernel_params *param;"},{"line_number":297,"context_line":"\tuint32_t stack_ptr \u003d 0;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tif (rtos \u003d\u003d NULL)"},{"line_number":300,"context_line":"\t\treturn -1;"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"\tif (thread_id \u003d\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8dc21ea0_4d63df1f","line":299,"updated":"2021-11-03 18:07:36.000000000","message":"no NULL comparison: if (!rtos)","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":296,"context_line":"\tconst struct rtkernel_params *param;"},{"line_number":297,"context_line":"\tuint32_t stack_ptr \u003d 0;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tif (rtos \u003d\u003d NULL)"},{"line_number":300,"context_line":"\t\treturn -1;"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"\tif (thread_id \u003d\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"63ad1c57_93e1bd1e","line":299,"in_reply_to":"8dc21ea0_4d63df1f","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":302,"context_line":"\tif (thread_id \u003d\u003d 0)"},{"line_number":303,"context_line":"\t\treturn -2;"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"\tif (rtos-\u003ertos_specific_params \u003d\u003d NULL)"},{"line_number":306,"context_line":"\t\treturn -1;"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"\tparam \u003d (const struct rtkernel_params *) rtos-\u003ertos_specific_params;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"25836569_206bf5cc","line":305,"updated":"2021-11-03 18:07:36.000000000","message":"no NULL comparison","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":302,"context_line":"\tif (thread_id \u003d\u003d 0)"},{"line_number":303,"context_line":"\t\treturn -2;"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"\tif (rtos-\u003ertos_specific_params \u003d\u003d NULL)"},{"line_number":306,"context_line":"\t\treturn -1;"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"\tparam \u003d (const struct rtkernel_params *) rtos-\u003ertos_specific_params;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"20684ce6_3794e97b","line":305,"in_reply_to":"25836569_206bf5cc","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":305,"context_line":"\tif (rtos-\u003ertos_specific_params \u003d\u003d NULL)"},{"line_number":306,"context_line":"\t\treturn -1;"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"\tparam \u003d (const struct rtkernel_params *) rtos-\u003ertos_specific_params;"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"\t/* Read the stack pointer */"},{"line_number":311,"context_line":"\tretval \u003d target_read_u32(rtos-\u003etarget, thread_id + rtos-\u003esymbols[sym___off_task2stack].address, \u0026stack_ptr);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"17d602ea_f879642a","line":308,"updated":"2021-11-03 18:07:36.000000000","message":"no need for cast; \"rtos_specific_params\" is a void*","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":305,"context_line":"\tif (rtos-\u003ertos_specific_params \u003d\u003d NULL)"},{"line_number":306,"context_line":"\t\treturn -1;"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"\tparam \u003d (const struct rtkernel_params *) rtos-\u003ertos_specific_params;"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"\t/* Read the stack pointer */"},{"line_number":311,"context_line":"\tretval \u003d target_read_u32(rtos-\u003etarget, thread_id + rtos-\u003esymbols[sym___off_task2stack].address, \u0026stack_ptr);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6ee392cd_b67c2e7e","line":308,"in_reply_to":"17d602ea_f879642a","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":342,"context_line":"\t\t}"},{"line_number":343,"context_line":"\t}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"\tif (cm4_fpu_enabled \u003d\u003d 1) {"},{"line_number":346,"context_line":"\t\t/* Read the LR to decide between stacking with or without FPU */"},{"line_number":347,"context_line":"\t\tuint32_t LR_svc;"},{"line_number":348,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, stack_ptr + 0x20, \u0026LR_svc);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"95fd8def_25161188","line":345,"updated":"2021-11-03 18:07:36.000000000","message":"if you first check\nif (cm4_fpu_enabled \u003d\u003d 0) {LOG_DEBUG(\"cm3 stacking\"); return ...}\nthen you can remove the \"else\" and reduce the indentation","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":342,"context_line":"\t\t}"},{"line_number":343,"context_line":"\t}"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"\tif (cm4_fpu_enabled \u003d\u003d 1) {"},{"line_number":346,"context_line":"\t\t/* Read the LR to decide between stacking with or without FPU */"},{"line_number":347,"context_line":"\t\tuint32_t LR_svc;"},{"line_number":348,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, stack_ptr + 0x20, \u0026LR_svc);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"304475e7_a3dd0b0d","line":345,"in_reply_to":"95fd8def_25161188","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"\tif (cm4_fpu_enabled \u003d\u003d 1) {"},{"line_number":346,"context_line":"\t\t/* Read the LR to decide between stacking with or without FPU */"},{"line_number":347,"context_line":"\t\tuint32_t LR_svc;"},{"line_number":348,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, stack_ptr + 0x20, \u0026LR_svc);"},{"line_number":349,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\tLOG_OUTPUT(\"Error reading stack frame from rtkernel thread\\r\\n\");"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"de8b7af3_1247c67c","line":347,"updated":"2021-11-03 18:07:36.000000000","message":"CamelCase symbol. Can become \"lr_svc\"?","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"\tif (cm4_fpu_enabled \u003d\u003d 1) {"},{"line_number":346,"context_line":"\t\t/* Read the LR to decide between stacking with or without FPU */"},{"line_number":347,"context_line":"\t\tuint32_t LR_svc;"},{"line_number":348,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, stack_ptr + 0x20, \u0026LR_svc);"},{"line_number":349,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\tLOG_OUTPUT(\"Error reading stack frame from rtkernel thread\\r\\n\");"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b41eefcc_795905fe","line":347,"in_reply_to":"de8b7af3_1247c67c","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":353,"context_line":"\t\tif ((LR_svc \u0026 0x10) \u003d\u003d 0) {"},{"line_number":354,"context_line":"\t\t\tLOG_DEBUG(\"cm4f_fpu stacking\");"},{"line_number":355,"context_line":"\t\t\treturn rtos_generic_stack_read(rtos-\u003etarget, param-\u003estacking_info_cm4f_fpu, stack_ptr, reg_list, num_regs);"},{"line_number":356,"context_line":"\t\t} else {"},{"line_number":357,"context_line":"\t\t\tLOG_DEBUG(\"cm4f stacking\");"},{"line_number":358,"context_line":"\t\t\treturn rtos_generic_stack_read(rtos-\u003etarget, param-\u003estacking_info_cm4f, stack_ptr, reg_list, num_regs);"},{"line_number":359,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9725e9b9_4898bf0c","line":356,"updated":"2021-11-03 18:07:36.000000000","message":"no need for \"else\" after \"return\"","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":353,"context_line":"\t\tif ((LR_svc \u0026 0x10) \u003d\u003d 0) {"},{"line_number":354,"context_line":"\t\t\tLOG_DEBUG(\"cm4f_fpu stacking\");"},{"line_number":355,"context_line":"\t\t\treturn rtos_generic_stack_read(rtos-\u003etarget, param-\u003estacking_info_cm4f_fpu, stack_ptr, reg_list, num_regs);"},{"line_number":356,"context_line":"\t\t} else {"},{"line_number":357,"context_line":"\t\t\tLOG_DEBUG(\"cm4f stacking\");"},{"line_number":358,"context_line":"\t\t\treturn rtos_generic_stack_read(rtos-\u003etarget, param-\u003estacking_info_cm4f, stack_ptr, reg_list, num_regs);"},{"line_number":359,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a93b092f_38b73c9e","line":356,"in_reply_to":"9725e9b9_4898bf0c","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"static int rtkernel_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":367,"context_line":"{"},{"line_number":368,"context_line":"\tunsigned int i;"},{"line_number":369,"context_line":"\t*symbol_list \u003d calloc("},{"line_number":370,"context_line":"\t\t\tARRAY_SIZE(rtkernel_symbol_list), sizeof(struct symbol_table_elem));"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8be2279e_8173f261","line":368,"updated":"2021-11-03 18:07:36.000000000","message":"declare the variable in for(int i; ...","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"static int rtkernel_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":367,"context_line":"{"},{"line_number":368,"context_line":"\tunsigned int i;"},{"line_number":369,"context_line":"\t*symbol_list \u003d calloc("},{"line_number":370,"context_line":"\t\t\tARRAY_SIZE(rtkernel_symbol_list), sizeof(struct symbol_table_elem));"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"865100a8_0e9547f3","line":368,"in_reply_to":"8be2279e_8173f261","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"static bool rtkernel_detect_rtos(struct target *target)"},{"line_number":381,"context_line":"{"},{"line_number":382,"context_line":"\treturn (target-\u003ertos-\u003esymbols !\u003d NULL) \u0026\u0026"},{"line_number":383,"context_line":"\t\t\t(target-\u003ertos-\u003esymbols[sym___off_os_state2chain].address !\u003d 0);"},{"line_number":384,"context_line":"}"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3f14a222_daaf8d1c","line":382,"updated":"2021-11-03 18:07:36.000000000","message":"no NULL comparison","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"static bool rtkernel_detect_rtos(struct target *target)"},{"line_number":381,"context_line":"{"},{"line_number":382,"context_line":"\treturn (target-\u003ertos-\u003esymbols !\u003d NULL) \u0026\u0026"},{"line_number":383,"context_line":"\t\t\t(target-\u003ertos-\u003esymbols[sym___off_os_state2chain].address !\u003d 0);"},{"line_number":384,"context_line":"}"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"355515cf_4a37f7f8","line":382,"in_reply_to":"3f14a222_daaf8d1c","updated":"2021-11-08 18:42:00.000000000","message":"Done","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"static int rtkernel_create(struct target *target)"},{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"82c317a6_f73dc5f1","line":388,"updated":"2021-11-03 18:07:36.000000000","message":"no need for {}","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"static int rtkernel_create(struct target *target)"},{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b3141acb_cc56d8bb","line":388,"in_reply_to":"7d8c9734_5bbf2321","updated":"2023-01-20 23:03:26.000000000","message":"Ack","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":true,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"static int rtkernel_create(struct target *target)"},{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7d8c9734_5bbf2321","line":388,"in_reply_to":"82c317a6_f73dc5f1","updated":"2021-11-08 18:42:00.000000000","message":"It looks weird and unbalanced without. Braces should be mandatory for multi-line bodies.","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"25dec94020f9de18cc1947c27891685f415c9ede","unresolved":true,"context_lines":[{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"},{"line_number":392,"context_line":"\t\t}"},{"line_number":393,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"de4b7eb3_c4d8f9fe","line":390,"updated":"2021-11-03 18:07:36.000000000","message":"please remove the space after the cast","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"78871337f0a2f3b61cb00f55f05d2ce001bcdb96","unresolved":false,"context_lines":[{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"},{"line_number":392,"context_line":"\t\t}"},{"line_number":393,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f36d86c6_11bb256e","line":390,"in_reply_to":"de4b7eb3_c4d8f9fe","updated":"2021-11-08 18:42:00.000000000","message":"or the cast","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"15eacf9462f4d876f810a3481668713792c617af","unresolved":false,"context_lines":[{"line_number":387,"context_line":"{"},{"line_number":388,"context_line":"\tfor (int i \u003d 0; i \u003c RTKERNEL_NUM_PARAMS; i++) {"},{"line_number":389,"context_line":"\t\tif (strcmp(rtkernel_params_list[i].target_name, target-\u003etype-\u003ename) \u003d\u003d 0) {"},{"line_number":390,"context_line":"\t\t\ttarget-\u003ertos-\u003ertos_specific_params \u003d (void *) \u0026rtkernel_params_list[i];"},{"line_number":391,"context_line":"\t\t\treturn 0;"},{"line_number":392,"context_line":"\t\t}"},{"line_number":393,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"cc681437_497791f1","line":390,"in_reply_to":"f36d86c6_11bb256e","updated":"2021-11-08 19:04:23.000000000","message":"No that wasn\u0027t possible, darn casts.","commit_id":"2deac6554bebffc1fadc86b7d8e1ba0c212349ee"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"15eacf9462f4d876f810a3481668713792c617af","unresolved":false,"context_lines":[{"line_number":299,"context_line":"\tbool cm4_fpu_enabled \u003d false;"},{"line_number":300,"context_line":"\tstruct armv7m_common *armv7m_target \u003d target_to_armv7m(rtos-\u003etarget);"},{"line_number":301,"context_line":"\tif (is_armv7m(armv7m_target)) {"},{"line_number":302,"context_line":"\t\tif (armv7m_target-\u003efp_feature \u003d\u003d FPV4_SP) {"},{"line_number":303,"context_line":"\t\t\t/* Found ARM v7m target which includes a FPU */"},{"line_number":304,"context_line":"\t\t\tuint32_t cpacr;"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"60fec3d4_531af951","line":302,"range":{"start_line":302,"start_character":35,"end_line":302,"end_character":42},"updated":"2021-11-08 19:04:23.000000000","message":"Nah, it was probably because I used a FPv5 target...","commit_id":"fe55b046e684eeb8f8963c6e3790dbfc3263a6a1"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":true,"context_lines":[{"line_number":127,"context_line":"\t\tLOG_ERROR(\"Error reading task name from target\");"},{"line_number":128,"context_line":"\t\treturn retval;"},{"line_number":129,"context_line":"\t}"},{"line_number":130,"context_line":"\ttmp_str[sizeof(tmp_str) - 1] \u003d \u0027\\0\u0027;"},{"line_number":131,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"670dbeb4_b301f1a7","line":130,"updated":"2021-11-08 19:54:53.000000000","message":"Not really a mistake, but odd... read N bytes from target then immediately overwrite last byte read! Maybe read N-1 bytes? Or define tmp_str[N+1]?","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"4e6b6f7cb5cc42faf24cee893804b8275a0230ed","unresolved":false,"context_lines":[{"line_number":127,"context_line":"\t\tLOG_ERROR(\"Error reading task name from target\");"},{"line_number":128,"context_line":"\t\treturn retval;"},{"line_number":129,"context_line":"\t}"},{"line_number":130,"context_line":"\ttmp_str[sizeof(tmp_str) - 1] \u003d \u0027\\0\u0027;"},{"line_number":131,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"582f9a71_32ce3666","line":130,"in_reply_to":"670dbeb4_b301f1a7","updated":"2023-01-18 10:42:00.000000000","message":"Done","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":true,"context_lines":[{"line_number":130,"context_line":"\ttmp_str[sizeof(tmp_str) - 1] \u003d \u0027\\0\u0027;"},{"line_number":131,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"},{"line_number":134,"context_line":"\t\tstrcpy((char *)tmp_str, \"No Name\");"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"\tthread-\u003ethread_name_str \u003d strdup((char *)tmp_str);"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"\t/* Read the task state */"},{"line_number":139,"context_line":"\tuint16_t state;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c30c4f8f_0a5619f9","line":136,"range":{"start_line":133,"start_character":1,"end_line":136,"end_character":51},"updated":"2021-11-08 19:54:53.000000000","message":"strip away the strcpy()?\nif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)\n    thread-\u003ethread_name_str \u003d strdup(\"No Name\");\nelse\n    thread-\u003ethread_name_str \u003d strdup((char *)tmp_str);","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"4e6b6f7cb5cc42faf24cee893804b8275a0230ed","unresolved":false,"context_lines":[{"line_number":130,"context_line":"\ttmp_str[sizeof(tmp_str) - 1] \u003d \u0027\\0\u0027;"},{"line_number":131,"context_line":"\tLOG_DEBUG(\"task name at 0x%\" PRIx32 \", value \\\"%s\\\"\", name, tmp_str);"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (tmp_str[0] \u003d\u003d \u0027\\0\u0027)"},{"line_number":134,"context_line":"\t\tstrcpy((char *)tmp_str, \"No Name\");"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"\tthread-\u003ethread_name_str \u003d strdup((char *)tmp_str);"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"\t/* Read the task state */"},{"line_number":139,"context_line":"\tuint16_t state;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"cd761889_0f9d09da","line":136,"range":{"start_line":133,"start_character":1,"end_line":136,"end_character":51},"in_reply_to":"c30c4f8f_0a5619f9","updated":"2023-01-18 10:42:00.000000000","message":"Done","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":true,"context_lines":[{"line_number":152,"context_line":"\t\tstrcat(state_str, \"RUN\");"},{"line_number":153,"context_line":"\t} else {"},{"line_number":154,"context_line":"\t\tif (state \u003d\u003d ST_TT)"},{"line_number":155,"context_line":"\t\t\tstrcat(state_str, \"READY\");"},{"line_number":156,"context_line":"\t\tif (state \u0026 ST_DEAD)"},{"line_number":157,"context_line":"\t\t\tstrcat(state_str, \"DEAD\");"},{"line_number":158,"context_line":"\t\telse if (state \u0026 ST_WAIT)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"2f627c86_6f8434f5","line":155,"updated":"2021-11-08 19:54:53.000000000","message":"here it would be concatenated \"READY\" with one of the following. Plus this test is same as line 149, so we will get \"TT|READYDEAD\" or \"TT|READYWAIT\" or \"TT|READYSUSP\" or \"TT|READYREADY\".\nIs it correct?","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"4e6b6f7cb5cc42faf24cee893804b8275a0230ed","unresolved":false,"context_lines":[{"line_number":152,"context_line":"\t\tstrcat(state_str, \"RUN\");"},{"line_number":153,"context_line":"\t} else {"},{"line_number":154,"context_line":"\t\tif (state \u003d\u003d ST_TT)"},{"line_number":155,"context_line":"\t\t\tstrcat(state_str, \"READY\");"},{"line_number":156,"context_line":"\t\tif (state \u0026 ST_DEAD)"},{"line_number":157,"context_line":"\t\t\tstrcat(state_str, \"DEAD\");"},{"line_number":158,"context_line":"\t\telse if (state \u0026 ST_WAIT)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"4f2edeae_d40e6ce4","line":155,"in_reply_to":"2f627c86_6f8434f5","updated":"2023-01-18 10:42:00.000000000","message":"Seems wrong, this should be correct, although I\u0027ve never seen a \"TT\" task.","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":true,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"\tif (!rtos-\u003esymbols) {"},{"line_number":214,"context_line":"\t\tLOG_ERROR(\"No symbols for rt-kernel\");"},{"line_number":215,"context_line":"\t\treturn -3;"},{"line_number":216,"context_line":"\t}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"\t/* read the current task */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"2e2c2c1b_414cf782","line":215,"updated":"2021-11-08 19:54:53.000000000","message":"not part of this patch, just a reminder: these numeric return values should be replaced with ERROR_XXX","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"4e6b6f7cb5cc42faf24cee893804b8275a0230ed","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"\tif (!rtos-\u003esymbols) {"},{"line_number":214,"context_line":"\t\tLOG_ERROR(\"No symbols for rt-kernel\");"},{"line_number":215,"context_line":"\t\treturn -3;"},{"line_number":216,"context_line":"\t}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"\t/* read the current task */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7a833224_f2f8e9d1","line":215,"in_reply_to":"2e2c2c1b_414cf782","updated":"2023-01-18 10:42:00.000000000","message":"Ack","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6eb49d1e568c63bd2fdbce711e9713dcf3ddec6d","unresolved":true,"context_lines":[{"line_number":263,"context_line":"\t\t\treturn retval;"},{"line_number":264,"context_line":"\t\t}"},{"line_number":265,"context_line":"\t}"},{"line_number":266,"context_line":"\treturn 0;"},{"line_number":267,"context_line":"}"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"static int rtkernel_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"216f3fcf_70f90f39","line":266,"updated":"2021-11-08 19:54:53.000000000","message":"return ERROR_OK;","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"4e6b6f7cb5cc42faf24cee893804b8275a0230ed","unresolved":false,"context_lines":[{"line_number":263,"context_line":"\t\t\treturn retval;"},{"line_number":264,"context_line":"\t\t}"},{"line_number":265,"context_line":"\t}"},{"line_number":266,"context_line":"\treturn 0;"},{"line_number":267,"context_line":"}"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"static int rtkernel_get_thread_reg_list(struct rtos *rtos, int64_t thread_id,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"55c9e00c_6d7ba583","line":266,"in_reply_to":"216f3fcf_70f90f39","updated":"2023-01-18 10:42:00.000000000","message":"Done","commit_id":"650959d4edc76def0a28cee6bfee0bed2a70c902"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":true,"context_lines":[{"line_number":1,"context_line":"// SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"/***************************************************************************"},{"line_number":4,"context_line":" *   Copyright (C) 2016 by Andreas Fritiofson                              *"},{"line_number":5,"context_line":" *   andreas.fritiofson@gmail.com                                          *"},{"line_number":6,"context_line":" ***************************************************************************/"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"f69a7d26_070cf536","line":4,"updated":"2023-01-20 23:03:26.000000000","message":"2016-2023","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"715cfe341283a6d252eb6d2cf06d504ebb42dd80","unresolved":false,"context_lines":[{"line_number":1,"context_line":"// SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"/***************************************************************************"},{"line_number":4,"context_line":" *   Copyright (C) 2016 by Andreas Fritiofson                              *"},{"line_number":5,"context_line":" *   andreas.fritiofson@gmail.com                                          *"},{"line_number":6,"context_line":" ***************************************************************************/"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"44153509_b5f042eb","line":4,"in_reply_to":"f69a7d26_070cf536","updated":"2023-01-21 01:33:43.000000000","message":"Done","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":true,"context_lines":[{"line_number":92,"context_line":"\tint retval;"},{"line_number":93,"context_line":"\tint new_thread_count \u003d rtos-\u003ethread_count + 1;"},{"line_number":94,"context_line":"\tstruct thread_detail *new_thread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":95,"context_line":"\t\t\tnew_thread_count * sizeof(struct thread_detail));"},{"line_number":96,"context_line":"\tif (!new_thread_details) {"},{"line_number":97,"context_line":"\t\tLOG_ERROR(\"Error growing memory to %d threads\", new_thread_count);"},{"line_number":98,"context_line":"\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"59630daf_b0cc3d59","line":95,"updated":"2023-01-20 23:03:26.000000000","message":"There are 2 issues here, linked to using realloc().\n\n1) realloc() does not initialize the \u0027added\u0027 memory.\n   If this function exits earlier for an error, then the fields \u0027thread_name_str\u0027 and \u0027extra_info_str\u0027 of the added element will contain random pointers.\n   In rtos_free_threadlist() these pointers are free(), triggering funny fireworks.\n   Please init the two fields to NULL at line 103.\n\n2) If realloc() fails, the old content of *new_thread_details is lost, so all the allocated memory for \u0027thread_name_str\u0027 and \u0027extra_info_str\u0027 will leak.\n  There are other 2 rtos implementation that have the same issue: nuttx and zephyr. Must be fixed.\n  Do you have way to get the number of tasks/threads, apart from re-iterating the linked list in rtkernel_update_threads()?\n  Is there a max value for thread_count?\n  Or this realloc() should be replaced with a new\u003dmalloc() + memcpy(new,old) + free(old)?","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"1e160a45bca5dfd21d9d1649fc76a7d640703780","unresolved":false,"context_lines":[{"line_number":92,"context_line":"\tint retval;"},{"line_number":93,"context_line":"\tint new_thread_count \u003d rtos-\u003ethread_count + 1;"},{"line_number":94,"context_line":"\tstruct thread_detail *new_thread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":95,"context_line":"\t\t\tnew_thread_count * sizeof(struct thread_detail));"},{"line_number":96,"context_line":"\tif (!new_thread_details) {"},{"line_number":97,"context_line":"\t\tLOG_ERROR(\"Error growing memory to %d threads\", new_thread_count);"},{"line_number":98,"context_line":"\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"6de9383b_4003f268","line":95,"in_reply_to":"2b7f1688_28c7c51c","updated":"2023-01-21 01:42:29.000000000","message":"Could always store the thread details temporarily in a more flexible data structure while iterating the list, and then afterwards reshuffle the elements into the weird array expected by the RTOS layer.\n\nBut for now I\u0027ll just make an inefficient realloc replacement.","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"715cfe341283a6d252eb6d2cf06d504ebb42dd80","unresolved":true,"context_lines":[{"line_number":92,"context_line":"\tint retval;"},{"line_number":93,"context_line":"\tint new_thread_count \u003d rtos-\u003ethread_count + 1;"},{"line_number":94,"context_line":"\tstruct thread_detail *new_thread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":95,"context_line":"\t\t\tnew_thread_count * sizeof(struct thread_detail));"},{"line_number":96,"context_line":"\tif (!new_thread_details) {"},{"line_number":97,"context_line":"\t\tLOG_ERROR(\"Error growing memory to %d threads\", new_thread_count);"},{"line_number":98,"context_line":"\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"2b7f1688_28c7c51c","line":95,"in_reply_to":"59630daf_b0cc3d59","updated":"2023-01-21 01:33:43.000000000","message":"\u003e If this function exits earlier for an error, then the fields \u0027thread_name_str\u0027 and \u0027extra_info_str\u0027 of the added element will contain random pointers.\n\nNo, thread_count is not updated unless the function succeeds, at which point the fields will be set. Nevertheless, I will do a compound literal assignment to it instead, to cover any fields added in the future.\n\n\u003e If realloc() fails, the old content of *new_thread_details is lost, so all the allocated memory for \u0027thread_name_str\u0027 and \u0027extra_info_str\u0027 will leak.\n\nIndeed. The concept of malloc et al. failing for these types of allocations is purely theoretical and will never happen in practice. If they do, leaking some allocations would be the least of the problem. Changing all allocation functions to abort on failure and getting rid of all the checks would IMHO be a perfectly reasonable alternative. If you don\u0027t have the memory to run OpenOCD, then don\u0027t run it. But I digress. I\u0027ll take a look at what the other RTOS implementations do, however I fear the most correct solution is to fix the awkward RTOS API that makes these types of allocations necessary, and I don\u0027t plan to do that now.","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"\tuint32_t next \u003d chain;"},{"line_number":229,"context_line":"\tfor (;;) {"},{"line_number":230,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, next, \u0026next);"},{"line_number":231,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":232,"context_line":"\t\t\tLOG_ERROR(\"Could not read rt-kernel data structure from target\");"},{"line_number":233,"context_line":"\t\t\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"e8a3fd57_fc3896ca","line":230,"updated":"2023-01-20 23:03:26.000000000","message":"reading twice from target this linked list, first to get the thread_count, then to read each thread, will impact the performance. Each read is atomic!\nIf you have a max thread_count, then allocate a tmp array to cache the list at the first pass.\nOther way, making a recursive function that in the recursion calls do the first read of the list, at the end allocates the thread_details, and returning reads each thread. Will the host stack be enough for this recursion?","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"1e160a45bca5dfd21d9d1649fc76a7d640703780","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"\tuint32_t next \u003d chain;"},{"line_number":229,"context_line":"\tfor (;;) {"},{"line_number":230,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, next, \u0026next);"},{"line_number":231,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":232,"context_line":"\t\t\tLOG_ERROR(\"Could not read rt-kernel data structure from target\");"},{"line_number":233,"context_line":"\t\t\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"9eae8ad2_14c88fb6","line":230,"in_reply_to":"d03ecc5d_fc5922e5","updated":"2023-01-21 01:42:29.000000000","message":"Ok I see you mean if used as a potential solution to the realloc issue...","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"715cfe341283a6d252eb6d2cf06d504ebb42dd80","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"\tuint32_t next \u003d chain;"},{"line_number":229,"context_line":"\tfor (;;) {"},{"line_number":230,"context_line":"\t\tretval \u003d target_read_u32(rtos-\u003etarget, next, \u0026next);"},{"line_number":231,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":232,"context_line":"\t\t\tLOG_ERROR(\"Could not read rt-kernel data structure from target\");"},{"line_number":233,"context_line":"\t\t\treturn retval;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"d03ecc5d_fc5922e5","line":230,"in_reply_to":"e8a3fd57_fc3896ca","updated":"2023-01-21 01:33:43.000000000","message":"I don\u0027t think I understand where that other iteration is, I only see one read from each memory location for each call to the thread list update function.\n\nAgree that some of the reads for each list entry could be performed in one transaction, unfortunately the target API doesn\u0027t provide the ability to do batched accesses. Could perhaps read the entire task structure in one block and then access the fields locally to save a few atomic reads. However I haven\u0027t noticed any performance issues so it probably won\u0027t be worth the complication.","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"320b2642d4e637f40564c7b599c8f3f9e6f026ed","unresolved":true,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"static int rtkernel_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":332,"context_line":"{"},{"line_number":333,"context_line":"\t*symbol_list \u003d calloc(ARRAY_SIZE(rtkernel_symbol_list), sizeof(struct symbol_table_elem));"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"\tfor (size_t i \u003d 0; i \u003c ARRAY_SIZE(rtkernel_symbol_list); i++) {"},{"line_number":336,"context_line":"\t\t(*symbol_list)[i].symbol_name \u003d rtkernel_symbol_list[i].name;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"70da2886_d8968fc2","line":333,"updated":"2023-01-20 23:03:26.000000000","message":"please check for calloc() return NULL","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"715cfe341283a6d252eb6d2cf06d504ebb42dd80","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"static int rtkernel_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":332,"context_line":"{"},{"line_number":333,"context_line":"\t*symbol_list \u003d calloc(ARRAY_SIZE(rtkernel_symbol_list), sizeof(struct symbol_table_elem));"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"\tfor (size_t i \u003d 0; i \u003c ARRAY_SIZE(rtkernel_symbol_list); i++) {"},{"line_number":336,"context_line":"\t\t(*symbol_list)[i].symbol_name \u003d rtkernel_symbol_list[i].name;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"3d313e0a_38221822","line":333,"in_reply_to":"70da2886_d8968fc2","updated":"2023-01-21 01:33:43.000000000","message":"Sure. Won\u0027t help though, because the caller doesn\u0027t check the return value and happily dereferences the pointer regardless. That would be a fix for another change.","commit_id":"d944224b0d35bf39e826e4caaa2374e9994787d3"}]}
