@@ -1815,10 +1815,13 @@ _DML_serialize_hook_queue(ht_str_table_t *callback_ht,
18151815 return out ;
18161816}
18171817
1818+ typedef attr_value_t (* _get_attr_t )(conf_object_t * , lang_void * );
1819+ typedef set_error_t (* _set_attr_t )(conf_object_t * , attr_value_t * ,
1820+ lang_void * );
18181821
18191822UNUSED static void
18201823_DML_register_hook_attribute (conf_class_t * cls , const char * attrname ,
1821- get_attr_t getter , set_attr_t setter ,
1824+ _get_attr_t getter , _set_attr_t setter ,
18221825 const _dml_hook_aux_info_t * aux_info ,
18231826 _id_info_t hook_id_info , uint32 port_dims ) {
18241827
@@ -1831,10 +1834,10 @@ _DML_register_hook_attribute(conf_class_t *cls, const char *attrname,
18311834 hook_id_info .dimsizes [hook_id_info .dimensions - 1 - i ]);
18321835 MM_FREE (tmp_type );
18331836 }
1834- SIM_register_typed_attribute ( cls , attrname , getter , ( lang_void * ) aux_info ,
1835- setter , (lang_void * ) aux_info ,
1836- Sim_Attr_Optional | Sim_Attr_Internal ,
1837- sb_str (& type ), NULL , "hook" );
1837+ SIM_register_attribute_with_user_data (
1838+ cls , attrname , getter , (lang_void * ) aux_info , setter ,
1839+ ( lang_void * ) aux_info , Sim_Attr_Optional | Sim_Attr_Internal ,
1840+ sb_str (& type ), "hook" );
18381841 sb_free (& type );
18391842}
18401843
@@ -1948,29 +1951,26 @@ thus don't need proxy attributes.
19481951typedef struct {
19491952 ptrdiff_t port_obj_offset ;
19501953 const char * attrname ;
1951- get_attr_t get ;
1952- set_attr_t set ;
1954+ _get_attr_t get ;
1955+ _set_attr_t set ;
19531956 void * getset_data ;
19541957} _port_attr_t ;
19551958static attr_value_t
1956- _get_legacy_proxy_attr (lang_void * ptr , conf_object_t * obj , attr_value_t * idx )
1959+ _get_legacy_proxy_attr (conf_object_t * obj , lang_void * ptr )
19571960{
1958- ASSERT (SIM_attr_is_nil (* idx ));
19591961 _port_attr_t * port = (_port_attr_t * )ptr ;
19601962 conf_object_t * portobj = * (conf_object_t * * )(
19611963 (uintptr_t )obj + port -> port_obj_offset );
1962- return port -> get (port -> getset_data , portobj , NULL );
1964+ return port -> get (portobj , port -> getset_data );
19631965}
19641966static set_error_t
1965- _set_legacy_proxy_attr (lang_void * ptr , conf_object_t * obj , attr_value_t * val ,
1966- attr_value_t * idx )
1967+ _set_legacy_proxy_attr (conf_object_t * obj , attr_value_t * val , lang_void * ptr )
19671968{
1968- ASSERT (SIM_attr_is_nil (* idx ));
19691969 _port_attr_t * port = (_port_attr_t * )ptr ;
19701970 conf_object_t * portobj = * (conf_object_t * * )(
19711971 (uintptr_t )obj + port -> port_obj_offset );
19721972 if (port -> attrname == NULL || SIM_object_is_configured (portobj )) {
1973- return port -> set (port -> getset_data , portobj , val , NULL );
1973+ return port -> set (portobj , val , port -> getset_data );
19741974 } else {
19751975 // port attribute is registered as required; need to propagate
19761976 // value through API call to fulfil requirement
@@ -1980,12 +1980,13 @@ _set_legacy_proxy_attr(lang_void *ptr, conf_object_t *obj, attr_value_t *val,
19801980
19811981UNUSED static void
19821982_register_port_attr_no_aux (conf_class_t * portcls , const char * attrname ,
1983- get_attr_t getter , set_attr_t setter ,
1984- attr_attr_t attr , const char * type , const char * desc )
1983+ _get_attr_t getter , _set_attr_t setter ,
1984+ attr_attr_t attr , const char * type ,
1985+ const char * desc )
19851986{
1986- SIM_register_typed_attribute (
1987+ SIM_register_attribute_with_user_data (
19871988 portcls , attrname , getter , NULL , setter , NULL ,
1988- attr , type , NULL , desc );
1989+ attr , type , desc );
19891990}
19901991
19911992// port_obj_offset is the offset within the device struct of a pointer to the
@@ -1994,7 +1995,7 @@ UNUSED static void
19941995_register_port_legacy_proxy_attr (conf_class_t * devcls , conf_class_t * portcls ,
19951996 ptrdiff_t port_obj_offset , bool is_bank ,
19961997 const char * portname , const char * attrname ,
1997- get_attr_t getter , set_attr_t setter ,
1998+ _get_attr_t getter , _set_attr_t setter ,
19981999 attr_attr_t attr , const char * type ,
19992000 const char * desc , void * getset_data )
20002001{
@@ -2014,20 +2015,20 @@ _register_port_legacy_proxy_attr(conf_class_t *devcls, conf_class_t *portcls,
20142015 strbuf_t proxy_desc = sb_newf (
20152016 "Proxy attribute for %s.%s.%s" ,
20162017 is_bank ? "bank" : "port" , portname , attrname );
2017- SIM_register_typed_attribute (
2018+ SIM_register_attribute_with_user_data (
20182019 devcls , name ,
20192020 getter ? _get_legacy_proxy_attr : NULL , data ,
20202021 setter ? _set_legacy_proxy_attr : NULL , data ,
20212022 (attr_attr_t )(Sim_Attr_Pseudo | Sim_Attr_Internal ),
2022- type , NULL , sb_str (& proxy_desc ));
2023+ type , sb_str (& proxy_desc ));
20232024 sb_free (& proxy_desc );
20242025}
20252026
20262027UNUSED static void
20272028_register_port_attr (conf_class_t * devcls , conf_class_t * portcls ,
20282029 ptrdiff_t port_obj_offset , bool is_bank ,
20292030 const char * portname , const char * attrname ,
2030- get_attr_t getter , set_attr_t setter ,
2031+ _get_attr_t getter , _set_attr_t setter ,
20312032 attr_attr_t attr , const char * type , const char * desc ) {
20322033 _register_port_attr_no_aux (portcls , attrname , getter , setter , attr , type ,
20332034 desc );
@@ -2039,24 +2040,21 @@ _register_port_attr(conf_class_t *devcls, conf_class_t *portcls,
20392040typedef struct {
20402041 ptrdiff_t port_obj_base_offset ;
20412042 const char * attrname ;
2042- get_attr_t get ;
2043- set_attr_t set ;
2043+ _get_attr_t get ;
2044+ _set_attr_t set ;
20442045 void * getset_data ;
20452046 uint32 array_size ;
20462047} _port_array_attr_t ;
20472048static attr_value_t
2048- _get_legacy_proxy_array_attr (lang_void * ptr , conf_object_t * obj ,
2049- attr_value_t * idx )
2049+ _get_legacy_proxy_array_attr (conf_object_t * obj , lang_void * ptr )
20502050{
2051- ASSERT (SIM_attr_is_nil (* idx ));
20522051 _port_array_attr_t * port = (_port_array_attr_t * )ptr ;
20532052 conf_object_t * * port_obj_ptr_base = (conf_object_t * * )(
20542053 (uintptr_t )obj + port -> port_obj_base_offset );
20552054 attr_value_t vals = SIM_alloc_attr_list (port -> array_size );
20562055 for (uint32 i = 0 ; i < port -> array_size ; i ++ ) {
20572056 conf_object_t * port_obj = port_obj_ptr_base [i ];
2058- attr_value_t val = port -> get (port -> getset_data , port_obj ,
2059- NULL );
2057+ attr_value_t val = port -> get (port_obj , port -> getset_data );
20602058 if (SIM_attr_is_invalid (val )) {
20612059 SIM_attr_free (& vals );
20622060 return val ;
@@ -2066,10 +2064,9 @@ _get_legacy_proxy_array_attr(lang_void *ptr, conf_object_t *obj,
20662064 return vals ;
20672065}
20682066static set_error_t
2069- _set_legacy_proxy_array_attr (lang_void * ptr , conf_object_t * obj ,
2070- attr_value_t * vals , attr_value_t * idx )
2067+ _set_legacy_proxy_array_attr (conf_object_t * obj , attr_value_t * vals ,
2068+ lang_void * ptr )
20712069{
2072- ASSERT (SIM_attr_is_nil (* idx ));
20732070 _port_array_attr_t * port = (_port_array_attr_t * )ptr ;
20742071 conf_object_t * * port_obj_ptr_base = (conf_object_t * * )(
20752072 (uintptr_t )obj + port -> port_obj_base_offset );
@@ -2079,8 +2076,7 @@ _set_legacy_proxy_array_attr(lang_void *ptr, conf_object_t *obj,
20792076 set_error_t err ;
20802077 if (port -> attrname == NULL
20812078 || SIM_object_is_configured (port_obj )) {
2082- err = port -> set (port -> getset_data , port_obj , & val ,
2083- NULL );
2079+ err = port -> set (port_obj , & val , port -> getset_data );
20842080 } else {
20852081 // port attribute is registered as required; need to
20862082 // propagate value through API call to fulfil
@@ -2100,7 +2096,7 @@ UNUSED static void
21002096_register_port_array_legacy_proxy_attr (
21012097 conf_class_t * devcls , conf_class_t * portcls , ptrdiff_t port_obj_offset ,
21022098 uint32 array_size , bool is_bank , const char * portname ,
2103- const char * attrname , get_attr_t getter , set_attr_t setter ,
2099+ const char * attrname , _get_attr_t getter , _set_attr_t setter ,
21042100 attr_attr_t attr , const char * type , const char * desc , void * getset_data ) {
21052101 _port_array_attr_t * data = MM_MALLOC (1 , _port_array_attr_t );
21062102 data -> port_obj_base_offset = port_obj_offset ;
@@ -2120,12 +2116,12 @@ _register_port_array_legacy_proxy_attr(
21202116 is_bank ? "bank" : "port" ,
21212117 portname , attrname );
21222118 strbuf_t proxy_type = sb_newf ("[%s{%d}]" , type , array_size );
2123- SIM_register_typed_attribute (
2119+ SIM_register_attribute_with_user_data (
21242120 devcls , name ,
21252121 getter ? _get_legacy_proxy_array_attr : NULL , data ,
21262122 setter ? _set_legacy_proxy_array_attr : NULL , data ,
21272123 (attr_attr_t )(Sim_Attr_Pseudo | Sim_Attr_Internal ),
2128- sb_str (& proxy_type ), NULL , sb_str (& proxy_desc ));
2124+ sb_str (& proxy_type ), sb_str (& proxy_desc ));
21292125 sb_free (& proxy_type );
21302126 sb_free (& proxy_desc );
21312127}
@@ -2134,8 +2130,8 @@ UNUSED static void
21342130_register_port_array_attr (conf_class_t * devcls , conf_class_t * portcls ,
21352131 ptrdiff_t port_obj_offset , uint32 array_size ,
21362132 bool is_bank , const char * portname ,
2137- const char * attrname , get_attr_t getter ,
2138- set_attr_t setter , attr_attr_t attr ,
2133+ const char * attrname , _get_attr_t getter ,
2134+ _set_attr_t setter , attr_attr_t attr ,
21392135 const char * type , const char * desc ) {
21402136 _register_port_attr_no_aux (portcls , attrname , getter , setter , attr , type ,
21412137 desc );
@@ -3070,8 +3066,8 @@ _saved_device_member_getter(void *val, uintptr_t acc) {
30703066
30713067
30723068UNUSED static set_error_t
3073- _set_saved_variable (lang_void * saved_access , conf_object_t * obj ,
3074- attr_value_t * val , attr_value_t * _ ) {
3069+ _set_saved_variable (conf_object_t * obj , attr_value_t * val ,
3070+ lang_void * saved_access ) {
30753071 _saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
30763072
30773073 return _set_device_member (* val ,
@@ -3084,8 +3080,7 @@ _set_saved_variable(lang_void *saved_access, conf_object_t *obj,
30843080}
30853081
30863082UNUSED static attr_value_t
3087- _get_saved_variable (lang_void * saved_access , conf_object_t * obj ,
3088- attr_value_t * _ ) {
3083+ _get_saved_variable (conf_object_t * obj , lang_void * saved_access ) {
30893084 _saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
30903085 return _get_device_member ((char * )obj + acc -> relative_base ,
30913086 acc -> dimension_sizes ,
@@ -3096,8 +3091,8 @@ _get_saved_variable(lang_void *saved_access, conf_object_t *obj,
30963091}
30973092
30983093UNUSED static set_error_t
3099- _set_port_saved_variable (lang_void * saved_access , conf_object_t * _portobj ,
3100- attr_value_t * val , attr_value_t * _ ) {
3094+ _set_port_saved_variable (conf_object_t * _portobj , attr_value_t * val ,
3095+ lang_void * saved_access ) {
31013096 _port_object_t * portobj = (_port_object_t * )_portobj ;
31023097 conf_object_t * obj = portobj -> dev ;
31033098 _saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
@@ -3115,8 +3110,7 @@ _set_port_saved_variable(lang_void *saved_access, conf_object_t *_portobj,
31153110}
31163111
31173112UNUSED static attr_value_t
3118- _get_port_saved_variable (lang_void * saved_access , conf_object_t * _portobj ,
3119- attr_value_t * _ ) {
3113+ _get_port_saved_variable (conf_object_t * _portobj , lang_void * saved_access ) {
31203114 _port_object_t * portobj = (_port_object_t * )_portobj ;
31213115 conf_object_t * obj = portobj -> dev ;
31223116 _saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
@@ -3380,12 +3374,8 @@ UNUSED static void _DML_register_attributes(
33803374 const _dml_port_object_assoc_t * port_object_assocs ,
33813375 const _vtable_list_t * attribute_vtables , _each_in_t sequence ,
33823376 _dml_attr_conf_info_t (* get_attribute_info )(_traitref_t ),
3383- attr_value_t (* get_attr )(void * , conf_object_t * , attr_value_t * ),
3384- set_error_t (* set_attr )(void * , conf_object_t * , attr_value_t * ,
3385- attr_value_t * ),
3386- attr_value_t (* get_portobj_attr )(void * , conf_object_t * , attr_value_t * ),
3387- set_error_t (* set_portobj_attr )(void * , conf_object_t * , attr_value_t * ,
3388- attr_value_t * )) {
3377+ _get_attr_t get_attr , _set_attr_t set_attr ,
3378+ _get_attr_t get_portobj_attr , _set_attr_t set_portobj_attr ) {
33893379 for (uint32 i = 0 ; i < sequence .num ; ++ i ) {
33903380 _vtable_list_t list = attribute_vtables [i ];
33913381 uint64 num = list .num / sequence .array_size ;
@@ -3424,14 +3414,14 @@ UNUSED static void _DML_register_attributes(
34243414 MM_FREE (tmp_type );
34253415 }
34263416 conf_class_t * parent_obj_class = attr_info .parent_obj_class ;
3427- SIM_register_typed_attribute (
3417+ SIM_register_attribute_with_user_data (
34283418 parent_obj_class ? parent_obj_class : dev_class ,
34293419 attr_info .name ,
34303420 attr_info .readable ? parent_obj_class ? get_portobj_attr : get_attr
34313421 : NULL , attr_get_info ,
34323422 attr_info .writable ? parent_obj_class ? set_portobj_attr : set_attr
34333423 : NULL , attr_set_info ,
3434- attr_info .flags , sb_str (& type ), NULL , attr_info .doc );
3424+ attr_info .flags , sb_str (& type ), attr_info .doc );
34353425
34363426 _dml_attr_parent_obj_proxy_info_t proxy_info = attr_info .proxy_info ;
34373427 if (proxy_info .valid ) {
0 commit comments