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()