···489489 write_cpp_header_guard_end(f)
490490 f.close()
491491492492+def generate_struct_names(file, p):
493493+ """Generate list of structures names.
494494+495495+ Lists the structures used in the IPC protocol, this can be
496496+ used for tools such as pahole.
497497+ """
498498+ f = open(file, "w")
499499+ f.write("ipc_shared_memory\n")
500500+ types = set()
501501+ for call in p.calls:
502502+ for i in call.in_args + call.out_args:
503503+ if i.is_aggregate:
504504+ types.add(i.typename.split(" ")[-1])
505505+ for t in sorted(types):
506506+ f.write(t)
507507+ f.write("\n")
508508+ f.close()
492509493510def main():
494511 """Handle command line and generate a file."""
···513530 generate_server_c(output, p)
514531 if output.endswith("ipc_server_generated.h"):
515532 generate_server_header(output, p)
533533+ if output.endswith("structs.txt"):
534534+ generate_struct_names(output, p)
516535517536518537if __name__ == "__main__":