@@ -1815,10 +1815,13 @@ _DML_serialize_hook_queue(ht_str_table_t *callback_ht,
1815
1815
return out ;
1816
1816
}
1817
1817
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 * );
1818
1821
1819
1822
UNUSED static void
1820
1823
_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 ,
1822
1825
const _dml_hook_aux_info_t * aux_info ,
1823
1826
_id_info_t hook_id_info , uint32 port_dims ) {
1824
1827
@@ -1831,10 +1834,10 @@ _DML_register_hook_attribute(conf_class_t *cls, const char *attrname,
1831
1834
hook_id_info .dimsizes [hook_id_info .dimensions - 1 - i ]);
1832
1835
MM_FREE (tmp_type );
1833
1836
}
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" );
1838
1841
sb_free (& type );
1839
1842
}
1840
1843
@@ -1948,29 +1951,26 @@ thus don't need proxy attributes.
1948
1951
typedef struct {
1949
1952
ptrdiff_t port_obj_offset ;
1950
1953
const char * attrname ;
1951
- get_attr_t get ;
1952
- set_attr_t set ;
1954
+ _get_attr_t get ;
1955
+ _set_attr_t set ;
1953
1956
void * getset_data ;
1954
1957
} _port_attr_t ;
1955
1958
static 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 )
1957
1960
{
1958
- ASSERT (SIM_attr_is_nil (* idx ));
1959
1961
_port_attr_t * port = (_port_attr_t * )ptr ;
1960
1962
conf_object_t * portobj = * (conf_object_t * * )(
1961
1963
(uintptr_t )obj + port -> port_obj_offset );
1962
- return port -> get (port -> getset_data , portobj , NULL );
1964
+ return port -> get (portobj , port -> getset_data );
1963
1965
}
1964
1966
static 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 )
1967
1968
{
1968
- ASSERT (SIM_attr_is_nil (* idx ));
1969
1969
_port_attr_t * port = (_port_attr_t * )ptr ;
1970
1970
conf_object_t * portobj = * (conf_object_t * * )(
1971
1971
(uintptr_t )obj + port -> port_obj_offset );
1972
1972
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 );
1974
1974
} else {
1975
1975
// port attribute is registered as required; need to propagate
1976
1976
// 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,
1980
1980
1981
1981
UNUSED static void
1982
1982
_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 )
1985
1986
{
1986
- SIM_register_typed_attribute (
1987
+ SIM_register_attribute_with_user_data (
1987
1988
portcls , attrname , getter , NULL , setter , NULL ,
1988
- attr , type , NULL , desc );
1989
+ attr , type , desc );
1989
1990
}
1990
1991
1991
1992
// port_obj_offset is the offset within the device struct of a pointer to the
@@ -1994,7 +1995,7 @@ UNUSED static void
1994
1995
_register_port_legacy_proxy_attr (conf_class_t * devcls , conf_class_t * portcls ,
1995
1996
ptrdiff_t port_obj_offset , bool is_bank ,
1996
1997
const char * portname , const char * attrname ,
1997
- get_attr_t getter , set_attr_t setter ,
1998
+ _get_attr_t getter , _set_attr_t setter ,
1998
1999
attr_attr_t attr , const char * type ,
1999
2000
const char * desc , void * getset_data )
2000
2001
{
@@ -2014,20 +2015,20 @@ _register_port_legacy_proxy_attr(conf_class_t *devcls, conf_class_t *portcls,
2014
2015
strbuf_t proxy_desc = sb_newf (
2015
2016
"Proxy attribute for %s.%s.%s" ,
2016
2017
is_bank ? "bank" : "port" , portname , attrname );
2017
- SIM_register_typed_attribute (
2018
+ SIM_register_attribute_with_user_data (
2018
2019
devcls , name ,
2019
2020
getter ? _get_legacy_proxy_attr : NULL , data ,
2020
2021
setter ? _set_legacy_proxy_attr : NULL , data ,
2021
2022
(attr_attr_t )(Sim_Attr_Pseudo | Sim_Attr_Internal ),
2022
- type , NULL , sb_str (& proxy_desc ));
2023
+ type , sb_str (& proxy_desc ));
2023
2024
sb_free (& proxy_desc );
2024
2025
}
2025
2026
2026
2027
UNUSED static void
2027
2028
_register_port_attr (conf_class_t * devcls , conf_class_t * portcls ,
2028
2029
ptrdiff_t port_obj_offset , bool is_bank ,
2029
2030
const char * portname , const char * attrname ,
2030
- get_attr_t getter , set_attr_t setter ,
2031
+ _get_attr_t getter , _set_attr_t setter ,
2031
2032
attr_attr_t attr , const char * type , const char * desc ) {
2032
2033
_register_port_attr_no_aux (portcls , attrname , getter , setter , attr , type ,
2033
2034
desc );
@@ -2039,24 +2040,21 @@ _register_port_attr(conf_class_t *devcls, conf_class_t *portcls,
2039
2040
typedef struct {
2040
2041
ptrdiff_t port_obj_base_offset ;
2041
2042
const char * attrname ;
2042
- get_attr_t get ;
2043
- set_attr_t set ;
2043
+ _get_attr_t get ;
2044
+ _set_attr_t set ;
2044
2045
void * getset_data ;
2045
2046
uint32 array_size ;
2046
2047
} _port_array_attr_t ;
2047
2048
static 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 )
2050
2050
{
2051
- ASSERT (SIM_attr_is_nil (* idx ));
2052
2051
_port_array_attr_t * port = (_port_array_attr_t * )ptr ;
2053
2052
conf_object_t * * port_obj_ptr_base = (conf_object_t * * )(
2054
2053
(uintptr_t )obj + port -> port_obj_base_offset );
2055
2054
attr_value_t vals = SIM_alloc_attr_list (port -> array_size );
2056
2055
for (uint32 i = 0 ; i < port -> array_size ; i ++ ) {
2057
2056
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 );
2060
2058
if (SIM_attr_is_invalid (val )) {
2061
2059
SIM_attr_free (& vals );
2062
2060
return val ;
@@ -2066,10 +2064,9 @@ _get_legacy_proxy_array_attr(lang_void *ptr, conf_object_t *obj,
2066
2064
return vals ;
2067
2065
}
2068
2066
static 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 )
2071
2069
{
2072
- ASSERT (SIM_attr_is_nil (* idx ));
2073
2070
_port_array_attr_t * port = (_port_array_attr_t * )ptr ;
2074
2071
conf_object_t * * port_obj_ptr_base = (conf_object_t * * )(
2075
2072
(uintptr_t )obj + port -> port_obj_base_offset );
@@ -2079,8 +2076,7 @@ _set_legacy_proxy_array_attr(lang_void *ptr, conf_object_t *obj,
2079
2076
set_error_t err ;
2080
2077
if (port -> attrname == NULL
2081
2078
|| 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 );
2084
2080
} else {
2085
2081
// port attribute is registered as required; need to
2086
2082
// propagate value through API call to fulfil
@@ -2100,7 +2096,7 @@ UNUSED static void
2100
2096
_register_port_array_legacy_proxy_attr (
2101
2097
conf_class_t * devcls , conf_class_t * portcls , ptrdiff_t port_obj_offset ,
2102
2098
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 ,
2104
2100
attr_attr_t attr , const char * type , const char * desc , void * getset_data ) {
2105
2101
_port_array_attr_t * data = MM_MALLOC (1 , _port_array_attr_t );
2106
2102
data -> port_obj_base_offset = port_obj_offset ;
@@ -2120,12 +2116,12 @@ _register_port_array_legacy_proxy_attr(
2120
2116
is_bank ? "bank" : "port" ,
2121
2117
portname , attrname );
2122
2118
strbuf_t proxy_type = sb_newf ("[%s{%d}]" , type , array_size );
2123
- SIM_register_typed_attribute (
2119
+ SIM_register_attribute_with_user_data (
2124
2120
devcls , name ,
2125
2121
getter ? _get_legacy_proxy_array_attr : NULL , data ,
2126
2122
setter ? _set_legacy_proxy_array_attr : NULL , data ,
2127
2123
(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 ));
2129
2125
sb_free (& proxy_type );
2130
2126
sb_free (& proxy_desc );
2131
2127
}
@@ -2134,8 +2130,8 @@ UNUSED static void
2134
2130
_register_port_array_attr (conf_class_t * devcls , conf_class_t * portcls ,
2135
2131
ptrdiff_t port_obj_offset , uint32 array_size ,
2136
2132
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 ,
2139
2135
const char * type , const char * desc ) {
2140
2136
_register_port_attr_no_aux (portcls , attrname , getter , setter , attr , type ,
2141
2137
desc );
@@ -3070,8 +3066,8 @@ _saved_device_member_getter(void *val, uintptr_t acc) {
3070
3066
3071
3067
3072
3068
UNUSED 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 ) {
3075
3071
_saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
3076
3072
3077
3073
return _set_device_member (* val ,
@@ -3084,8 +3080,7 @@ _set_saved_variable(lang_void *saved_access, conf_object_t *obj,
3084
3080
}
3085
3081
3086
3082
UNUSED 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 ) {
3089
3084
_saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
3090
3085
return _get_device_member ((char * )obj + acc -> relative_base ,
3091
3086
acc -> dimension_sizes ,
@@ -3096,8 +3091,8 @@ _get_saved_variable(lang_void *saved_access, conf_object_t *obj,
3096
3091
}
3097
3092
3098
3093
UNUSED 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 ) {
3101
3096
_port_object_t * portobj = (_port_object_t * )_portobj ;
3102
3097
conf_object_t * obj = portobj -> dev ;
3103
3098
_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,
3115
3110
}
3116
3111
3117
3112
UNUSED 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 ) {
3120
3114
_port_object_t * portobj = (_port_object_t * )_portobj ;
3121
3115
conf_object_t * obj = portobj -> dev ;
3122
3116
_saved_userdata_t * acc = (_saved_userdata_t * ) saved_access ;
@@ -3380,12 +3374,8 @@ UNUSED static void _DML_register_attributes(
3380
3374
const _dml_port_object_assoc_t * port_object_assocs ,
3381
3375
const _vtable_list_t * attribute_vtables , _each_in_t sequence ,
3382
3376
_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 ) {
3389
3379
for (uint32 i = 0 ; i < sequence .num ; ++ i ) {
3390
3380
_vtable_list_t list = attribute_vtables [i ];
3391
3381
uint64 num = list .num / sequence .array_size ;
@@ -3424,14 +3414,14 @@ UNUSED static void _DML_register_attributes(
3424
3414
MM_FREE (tmp_type );
3425
3415
}
3426
3416
conf_class_t * parent_obj_class = attr_info .parent_obj_class ;
3427
- SIM_register_typed_attribute (
3417
+ SIM_register_attribute_with_user_data (
3428
3418
parent_obj_class ? parent_obj_class : dev_class ,
3429
3419
attr_info .name ,
3430
3420
attr_info .readable ? parent_obj_class ? get_portobj_attr : get_attr
3431
3421
: NULL , attr_get_info ,
3432
3422
attr_info .writable ? parent_obj_class ? set_portobj_attr : set_attr
3433
3423
: 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 );
3435
3425
3436
3426
_dml_attr_parent_obj_proxy_info_t proxy_info = attr_info .proxy_info ;
3437
3427
if (proxy_info .valid ) {
0 commit comments