@@ -764,6 +764,72 @@ def nvml_device_three_args_value(
764764 )
765765
766766
767+ def nvml_server_device_two_args_stub (first_type , second_type , out_type , value_init ):
768+ return f"""nvmlDevice_t _lupine_device = nullptr;
769+ { first_type } _lupine_first = {{}};
770+ { second_type } _lupine_second = {{}};
771+ if (rpc_read(conn, &_lupine_device, sizeof(_lupine_device)) < 0 ||
772+ rpc_read(conn, &_lupine_first, sizeof(_lupine_first)) < 0 ||
773+ rpc_read(conn, &_lupine_second, sizeof(_lupine_second)) < 0) {{
774+ return -1;
775+ }}
776+ int _lupine_request_id = rpc_read_end(conn);
777+ if (_lupine_request_id < 0) {{
778+ return -1;
779+ }}
780+
781+ { out_type } _lupine_value = { value_init } ;
782+ nvmlReturn_t _lupine_result = NVML_SUCCESS;
783+ if (rpc_write_start_response(conn, _lupine_request_id) < 0 ||
784+ rpc_write(conn, &_lupine_value, sizeof(_lupine_value)) < 0 ||
785+ rpc_write(conn, &_lupine_result, sizeof(_lupine_result)) < 0 ||
786+ rpc_write_end(conn) < 0) {{
787+ return -1;
788+ }}
789+ return 0;"""
790+
791+
792+ def nvml_server_device_three_args_stub (
793+ first_type , second_type , third_type , out_type , value_init
794+ ):
795+ return f"""nvmlDevice_t _lupine_device = nullptr;
796+ { first_type } _lupine_first = {{}};
797+ { second_type } _lupine_second = {{}};
798+ { third_type } _lupine_third = {{}};
799+ if (rpc_read(conn, &_lupine_device, sizeof(_lupine_device)) < 0 ||
800+ rpc_read(conn, &_lupine_first, sizeof(_lupine_first)) < 0 ||
801+ rpc_read(conn, &_lupine_second, sizeof(_lupine_second)) < 0 ||
802+ rpc_read(conn, &_lupine_third, sizeof(_lupine_third)) < 0) {{
803+ return -1;
804+ }}
805+ int _lupine_request_id = rpc_read_end(conn);
806+ if (_lupine_request_id < 0) {{
807+ return -1;
808+ }}
809+
810+ { out_type } _lupine_value = { value_init } ;
811+ nvmlReturn_t _lupine_result = NVML_SUCCESS;
812+ if (rpc_write_start_response(conn, _lupine_request_id) < 0 ||
813+ rpc_write(conn, &_lupine_value, sizeof(_lupine_value)) < 0 ||
814+ rpc_write(conn, &_lupine_result, sizeof(_lupine_result)) < 0 ||
815+ rpc_write_end(conn) < 0) {{
816+ return -1;
817+ }}
818+ return 0;"""
819+
820+
821+ def nvml_ecc_counter_stub (name , params , value_name , value_init , server_body ):
822+ nvml_codegen_function (
823+ name ,
824+ params ,
825+ f"""if ({ value_name } != nullptr) {{
826+ *{ value_name } = { value_init } ;
827+ }}
828+ return NVML_SUCCESS;""" ,
829+ server_body ,
830+ )
831+
832+
767833def nvml_device_two_values (name , first_type , first_name , second_type , second_name ):
768834 nvml_codegen_function (
769835 name ,
@@ -849,34 +915,39 @@ def nvml_device_two_values(name, first_type, first_name, second_type, second_nam
849915 "nvmlPciInfo_t" ,
850916 "pci" ,
851917)
852- nvml_device_two_args_value (
918+ nvml_ecc_counter_stub (
853919 "nvmlDeviceGetTotalEccErrors" ,
854- "nvmlMemoryErrorType_t" ,
855- "errorType" ,
856- "nvmlEccCounterType_t" ,
857- "counterType" ,
858- "unsigned long long" ,
920+ "nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long *eccCounts" ,
859921 "eccCounts" ,
922+ "0" ,
923+ nvml_server_device_two_args_stub (
924+ "nvmlMemoryErrorType_t" , "nvmlEccCounterType_t" , "unsigned long long" , "0"
925+ ),
860926)
861- nvml_device_two_args_value (
927+ nvml_ecc_counter_stub (
862928 "nvmlDeviceGetDetailedEccErrors" ,
863- "nvmlMemoryErrorType_t" ,
864- "errorType" ,
865- "nvmlEccCounterType_t" ,
866- "counterType" ,
867- "nvmlEccErrorCounts_t" ,
929+ "nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlEccErrorCounts_t *eccCounts" ,
868930 "eccCounts" ,
931+ "nvmlEccErrorCounts_t{}" ,
932+ nvml_server_device_two_args_stub (
933+ "nvmlMemoryErrorType_t" ,
934+ "nvmlEccCounterType_t" ,
935+ "nvmlEccErrorCounts_t" ,
936+ "nvmlEccErrorCounts_t{}" ,
937+ ),
869938)
870- nvml_device_three_args_value (
939+ nvml_ecc_counter_stub (
871940 "nvmlDeviceGetMemoryErrorCounter" ,
872- "nvmlMemoryErrorType_t" ,
873- "errorType" ,
874- "nvmlEccCounterType_t" ,
875- "counterType" ,
876- "nvmlMemoryLocation_t" ,
877- "locationType" ,
878- "unsigned long long" ,
941+ "nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlMemoryLocation_t locationType, unsigned long long *count" ,
879942 "count" ,
943+ "0" ,
944+ nvml_server_device_three_args_stub (
945+ "nvmlMemoryErrorType_t" ,
946+ "nvmlEccCounterType_t" ,
947+ "nvmlMemoryLocation_t" ,
948+ "unsigned long long" ,
949+ "0" ,
950+ ),
880951)
881952nvml_device_two_values (
882953 "nvmlDeviceGetEccMode" ,
0 commit comments