syntax = "proto2"; package dittosuiteproto; enum Order { SEQUENTIAL = 0; RANDOM = 1; } enum Reseeding { ONCE = 0; EACH_ROUND_OF_CYCLES = 1; EACH_CYCLE = 2; } enum AccessMode { READ_ONLY = 1; WRITE_ONLY = 2; READ_WRITE = 3; } enum FreePolicy { FREE_POLICY_UNSPECIFIED = 0; FREE_POLICY_EVERY_PERIOD = 1; FREE_POLICY_LAST_PERIOD = 2; FREE_POLICY_KEEP = 3; } message MemoryAllocate { optional uint64 size = 1; optional FreePolicy free_policy = 2 [default = FREE_POLICY_KEEP]; } message CpuWork { oneof type { uint64 cycles = 1; double utilization = 2; } } message BinderService { optional string name = 1; optional uint32 threads = 2; } message BinderRequest { enum RunningService { MOUNT_SERVICE = 0; }; message GenericService { message ParcelInput { message NestedParcel { repeated ParcelInput parcel_inputs = 1; } enum Type { // Write the 32-bit integer into the send parcel. I32 = 0; // Write the 64-bit integer into the send parcel. I64 = 1; // Write the UTF-16 string STR into the send parcel. STRING_16 = 2; // Write the 32-bit single-precision number into the send parcel. F = 3; // Write the 64-bit double-precision number into the send parcel. D = 4; // Write a null binder into the send parcel. NULL = 5; // Data: File name // Write a file descriptor for the file with given path into the send // parcel. FD_PATH = 6; // Data: File name // Write an ashmem file descriptor for a region containing the data // from file the given path into the send parcel. ASHMEM_FD_PATH = 7; // Data: FD number // Write the file descriptor into the send parcel. FD = 8; // Parcel input that is nested inside. PARCEL = 9; } optional Type type = 1; oneof data_oneof { string data = 2; NestedParcel nested_parcel = 3; } } optional string name = 1; optional int32 code = 2; repeated ParcelInput parcel_input = 3; } oneof service_oneof { string service_name = 1; RunningService running_service = 2; GenericService generic_service = 3; } } message OpenFile { oneof file { string path_name = 1; string input = 2; } optional string output_fd = 3; optional bool create = 4 [default = true]; optional bool direct_io = 5 [default = false]; optional AccessMode access_mode = 6 [default = READ_WRITE]; } message DeleteFile { oneof file { string path_name = 1; string input = 2; } } message CloseFile { required string input_fd = 1; } message ResizeFile { required string input_fd = 1; required int64 size = 2; } message ResizeFileRandom { required string input_fd = 1; required int64 min = 2; required int64 max = 3; optional uint32 seed = 4; optional Reseeding reseeding = 5 [default = ONCE]; } message WriteFile { required string input_fd = 1; optional int64 size = 2 [default = -1]; optional int64 block_size = 3 [default = 4096]; optional int64 starting_offset = 4 [default = 0]; optional Order access_order = 5 [default = SEQUENTIAL]; optional uint32 seed = 6; optional bool fsync = 7 [default = false]; optional Reseeding reseeding = 8 [default = ONCE]; } message ReadFile { enum ReadFAdvise { AUTOMATIC = 0; NORMAL = 1; SEQUENTIAL = 2; RANDOM = 3; } required string input_fd = 1; optional int64 size = 2 [default = -1]; optional int64 block_size = 3 [default = 4096]; optional int64 starting_offset = 4 [default = 0]; optional Order access_order = 5 [default = SEQUENTIAL]; optional uint32 seed = 6; optional ReadFAdvise fadvise = 7 [default = AUTOMATIC]; optional Reseeding reseeding = 8 [default = ONCE]; } message ReadDirectory { required string directory_name = 1; required string output = 2; } message Thread { required Instruction instruction = 1; optional int32 spawn = 2 [default = 1]; optional string name = 3; optional SchedAttr sched_attr = 4; optional int64 sched_affinity = 5 [default = -1]; } message SchedAttr { message SchedOther { enum SchedPolicy { OTHER = 1; BATCH = 2; } required SchedPolicy policy = 1; optional int32 nice = 2 [default = 10]; } message SchedRt { enum SchedPolicy { FIFO = 1; RR = 2; } required SchedPolicy policy = 1; required uint32 priority = 2; } message SchedDeadline { enum SchedPolicy { DEADLINE = 1; } required SchedPolicy policy = 1; required uint64 runtime = 2; required uint64 deadline = 3; required uint64 period = 4; } optional uint64 flags = 1 [default = 0]; oneof attributes { SchedOther other = 2; SchedRt rt = 3; SchedDeadline deadline = 4; } } message Multithreading { repeated Thread threads = 1; optional bool fork = 2 [default = false]; } message InvalidateCache {} message Instruction { optional int32 repeat = 1 [default = 1]; oneof instruction_oneof { InstructionSet instruction_set = 2; OpenFile open_file = 3; DeleteFile delete_file = 4; CloseFile close_file = 5; ResizeFile resize_file = 6; WriteFile write_file = 7; ReadFile read_file = 8; ReadDirectory read_directory = 9; ResizeFileRandom resize_file_random = 10; Multithreading multithreading = 11; InvalidateCache invalidate_cache = 12; BinderRequest binder_request = 13; BinderService binder_service = 14; CpuWork cpu_work = 16; MemoryAllocate mem_alloc = 17; }; optional uint64 period_us = 15 [default = 0]; optional uint64 offset_us = 18 [default = 0]; } message InstructionSet { repeated Instruction instructions = 1; optional InstructionSetIterate iterate_options = 2; } message InstructionSetIterate { required string list_name = 1; required string item_name = 2; optional Order access_order = 3 [default = SEQUENTIAL]; optional Reseeding reseeding = 4 [default = ONCE]; optional uint32 seed = 5; } message Global { optional string absolute_path = 1 [default = ""]; } message Benchmark { optional Instruction init = 1; required Instruction main = 2; optional Instruction clean_up = 3; required Global global = 4; }