userspace: generate list of kernel object sizes
This used to be done by hand but can easily be generated like
we do other switch statements based on object type.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
diff --git a/scripts/gen_kobject_list.py b/scripts/gen_kobject_list.py
index 0e41e19..4e0a88f 100755
--- a/scripts/gen_kobject_list.py
+++ b/scripts/gen_kobject_list.py
@@ -186,6 +186,17 @@
subsystem
))
+def write_kobj_size_output(fp):
+ fp.write("/* Non device/stack objects */\n")
+ for kobj in kobjects:
+ # device handled by default case. Stacks are not currently handled,
+ # if they eventually are it will be a special case.
+ if kobj == "device" or kobj == "_k_thread_stack_element":
+ continue
+
+ kobj_enum = "K_OBJ_%s" % kobj[2:].upper();
+
+ fp.write('case %s: return sizeof(struct %s);\n' % (kobj_enum, kobj))
def parse_args():
global args
@@ -208,6 +219,9 @@
parser.add_argument(
"-S", "--kobj-otype-output", required=False,
help="Output case statements for otype_to_str()")
+ parser.add_argument(
+ "-Z", "--kobj-size-output", required=False,
+ help="Output case statements for obj_size_get()")
parser.add_argument("-v", "--verbose", action="store_true",
help="Print extra debugging information")
args = parser.parse_args()
@@ -247,5 +261,9 @@
with open(args.kobj_otype_output, "w") as fp:
write_kobj_otype_output(fp)
+ if args.kobj_size_output:
+ with open(args.kobj_size_output, "w") as fp:
+ write_kobj_size_output(fp)
+
if __name__ == "__main__":
main()