Crate hwlocality_sys

Crate hwlocality_sys 

Source
Expand description

§hwlocality-sys: The low-level bindings below hwlocality

MIT licensed On crates.io On docs.rs Continuous Integration CII Best Practices Summary Requires rustc 1.75.0+

This crate contains the low-level unsafe Rust -> C FFI bindings to hwloc, that are used to implement the safe hwlocality bindings.

Depending on your needs, you can either link to a libhwloc that is pre-installed on your computer or have hwlocality build its own copy libhwloc internally. Please read the “Prerequisites” section of the hwlocality README for more information about these two options.

Like any C API, the hwlocality-sys low-level bindings are highly unsafe to use, and it is advised that you use the safe hwlocality bindings instead whenever possible. If you encounter any issue with the safe bindings that prevents you from using them and forces you to use the unsafe C API directly, please report them in the issue tracker so we get them fixed.

Structs§

RawDownstreamPCIAttributes
Downstream PCI device attributes
hwloc_bitmap_s
Opaque bitmap struct
hwloc_bridge_attr_s
HWLOC_OBJ_BRIDGE-specific attributes
hwloc_cache_attr_s
Cache-specific attributes
hwloc_distances_s
Matrix of distances between a set of objects
hwloc_group_attr_s
HWLOC_OBJ_GROUP-specific attributes
hwloc_info_s
Key-value string attributes
hwloc_locationhwloc-2_3_0
Where to measure attributes from
hwloc_memory_page_type_s
Local memory page type
hwloc_numanode_attr_s
HWLOC_OBJ_NUMANODE-specific attributes
hwloc_obj
Hardware topology object
hwloc_osdev_attr_s
HWLOC_OBJ_OS_DEVICE-specific attributes
hwloc_pcidev_attr_s
HWLOC_OBJ_PCI_DEVICE-specific attributes
hwloc_topology
Opaque topology struct
hwloc_topology_cpubind_support
Support for getting and setting thread/process CPU bindings
hwloc_topology_discovery_support
Support for discovering information about the topology
hwloc_topology_membind_support
Support for getting and setting thread/process NUMA node bindings
hwloc_topology_misc_supporthwloc-2_3_0
Miscellaneous support information
hwloc_topology_support
Set of flags describing actual hwloc feature support for this topology

Constants§

HWLOC_ALLOW_FLAG_ALLhwloc-2_3_0
Mark all objects as allowed in the topology
HWLOC_ALLOW_FLAG_CUSTOMhwloc-2_3_0
Allow a custom set of objects, given to hwloc_topology_allow() as cpuset and/or nodeset parameters.
HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONShwloc-2_3_0
Only allow objects that are available to the current process
HWLOC_CPUBIND_NOMEMBIND
Avoid any effect on memory binding
HWLOC_CPUBIND_PROCESS
Bind all threads of the current process
HWLOC_CPUBIND_STRICT
Request for strict binding from the OS
HWLOC_CPUBIND_THREAD
Bind the current thread of the current process
HWLOC_DISTANCES_ADD_FLAG_GROUPhwloc-2_5_0
Try to group objects based on the newly provided distance information
HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATEhwloc-2_5_0
Treat distances as inaccurate for grouping purposes
HWLOC_DISTANCES_KIND_FROM_OS
These distances were obtained from the operating system or hardware
HWLOC_DISTANCES_KIND_FROM_USER
These distances were provided by the user
HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPEShwloc-2_1_0
This distances structure covers objects of different types
HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH
Distance values are similar to bandwidths between objects
HWLOC_DISTANCES_KIND_MEANS_LATENCY
Distance values are similar to latencies between objects
HWLOC_DISTANCES_TRANSFORM_LINKShwloc-2_5_0
Replace bandwidth values with a number of links
HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTShwloc-2_5_0
Merge switches with multiple ports into a single object
HWLOC_DISTANCES_TRANSFORM_REMOVE_NULLhwloc-2_5_0
Remove NULL objects from the distances structure.
HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSUREhwloc-2_5_0
Apply a transitive closure to the matrix to connect objects across switches.
HWLOC_DISTRIB_FLAG_REVERSE
Distrib in reverse order, starting from the last objects
HWLOC_LOCAL_NUMANODE_FLAG_ALLhwloc-2_3_0
Select all NUMA nodes in the topology
HWLOC_LOCAL_NUMANODE_FLAG_INTERSECT_LOCALITYhwloc-2_3_0 and hwloc-2_12_1
Select NUMA nodes whose locality intersects the given cpuset
HWLOC_LOCAL_NUMANODE_FLAG_LARGER_LOCALITYhwloc-2_3_0
Select NUMA nodes whose locality is larger than the given cpuset
HWLOC_LOCAL_NUMANODE_FLAG_SMALLER_LOCALITYhwloc-2_3_0
Select NUMA nodes whose locality is smaller than the given cpuset
HWLOC_LOCATION_TYPE_CPUSEThwloc-2_3_0
Location is given as a cpuset, in the hwloc_location_u::cpuset union field
HWLOC_LOCATION_TYPE_OBJECThwloc-2_3_0
Location is given as an object, in the hwloc_location_u::object union field
HWLOC_MEMATTR_FLAG_HIGHER_FIRSThwloc-2_3_0
The best nodes for this memory attribute are those with the higher values
HWLOC_MEMATTR_FLAG_LOWER_FIRSThwloc-2_3_0
The best nodes for this memory attribute are those with the lower values
HWLOC_MEMATTR_FLAG_NEED_INITIATORhwloc-2_3_0
The value returned for this memory attribute depends on the given initiator
HWLOC_MEMATTR_ID_BANDWIDTHhwloc-2_3_0
Average bandwidth in MiB/s, as seen from the given initiator location
HWLOC_MEMATTR_ID_CAPACITYhwloc-2_3_0
Node capacity in bytes (see hwloc_obj::total_memory)
HWLOC_MEMATTR_ID_LATENCYhwloc-2_3_0
Latency in nanoseconds, as seen from the given initiator location
HWLOC_MEMATTR_ID_LOCALITYhwloc-2_3_0
Number of PUs in that locality (i.e. cpuset weight)
HWLOC_MEMATTR_ID_READ_BANDWIDTHhwloc-2_8_0
Read bandwidth in MiB/s, as seen from the given initiator location
HWLOC_MEMATTR_ID_READ_LATENCYhwloc-2_8_0
Read latency in nanoseconds, as seen from the given initiator location
HWLOC_MEMATTR_ID_WRITE_BANDWIDTHhwloc-2_8_0
Write bandwidth in MiB/s, as seen from the given initiator location
HWLOC_MEMATTR_ID_WRITE_LATENCYhwloc-2_8_0
Write latency in nanoseconds, as seen from the given initiator location
HWLOC_MEMBIND_BIND
Allocate memory on the specified nodes (most portable option)
HWLOC_MEMBIND_BYNODESET
Consider the bitmap argument as a nodeset.
HWLOC_MEMBIND_DEFAULT
Reset the memory allocation policy of the current process or thread to the system default
HWLOC_MEMBIND_FIRSTTOUCH
Allocate each memory page individually on the local NUMA node of the thread that touches it
HWLOC_MEMBIND_INTERLEAVE
Allocate memory on the given nodes in an interleaved round-robin manner
HWLOC_MEMBIND_MIGRATE
Migrate existing allocated memory
HWLOC_MEMBIND_MIXED
Mixture of memory binding policies
HWLOC_MEMBIND_NEXTTOUCH
Migrate pages on next touch
HWLOC_MEMBIND_NOCPUBIND
Avoid any effect on CPU binding
HWLOC_MEMBIND_PROCESS
Apply command to all threads of the specified process
HWLOC_MEMBIND_STRICT
Request strict binding from the OS
HWLOC_MEMBIND_THREAD
Apply command to the current thread of the current process
HWLOC_MEMBIND_WEIGHTED_INTERLEAVEhwloc-2_11_0
Allocate memory on the given nodes in an interleaved / weighted manner.
HWLOC_OBJ_BRIDGE
Bridge (filtered out by default)
HWLOC_OBJ_BRIDGE_HOST
Host-side of a bridge, only possible upstream
HWLOC_OBJ_BRIDGE_PCI
PCI-side of a bridge
HWLOC_OBJ_CACHE_DATA
Data cache
HWLOC_OBJ_CACHE_INSTRUCTION
Instruction cache (filtered out by default)
HWLOC_OBJ_CACHE_UNIFIED
Unified cache
HWLOC_OBJ_CORE
A computation unit (may be shared by several PUs aka logical processors)
HWLOC_OBJ_DIEhwloc-2_1_0
Die within a physical package
HWLOC_OBJ_GROUP
Group object
HWLOC_OBJ_L1CACHE
Level 1 Data (or Unified) Cache
HWLOC_OBJ_L1ICACHE
Level 1 Instruction cache (filtered out by default)
HWLOC_OBJ_L2CACHE
Level 2 Data (or Unified) Cache
HWLOC_OBJ_L2ICACHE
Level 2 Instruction cache (filtered out by default)
HWLOC_OBJ_L3CACHE
Level 3 Data (or Unified) Cache
HWLOC_OBJ_L3ICACHE
Level 3 Instruction cache (filtered out by default)
HWLOC_OBJ_L4CACHE
Level 4 Data (or Unified) Cache
HWLOC_OBJ_L5CACHE
Level 5 Data (or Unified) Cache
HWLOC_OBJ_MACHINE
The root object, a set of processors and memory with cache coherency
HWLOC_OBJ_MEMCACHEhwloc-2_1_0
Memory-side cache (filtered out by default)
HWLOC_OBJ_MISC
Miscellaneous object (filtered out by default)
HWLOC_OBJ_NUMANODE
NUMA node
HWLOC_OBJ_OSDEV_COPROC
Operating system co-processor device
HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device
HWLOC_OBJ_OSDEV_GPU
Operating system GPU device
HWLOC_OBJ_OSDEV_MEMORYhwloc-3_0_0
Operating system memory device
HWLOC_OBJ_OSDEV_NETWORK
Operating system network device
HWLOC_OBJ_OSDEV_OPENFABRICS
Operating system openfabrics device
HWLOC_OBJ_OSDEV_STORAGE
Operating system storage device (e.g. block)
HWLOC_OBJ_OS_DEVICE
Operating system device (filtered out by default)
HWLOC_OBJ_PACKAGE
Physical package, what goes into a physical motherboard socket
HWLOC_OBJ_PCI_DEVICE
PCI device (filtered out by default)
HWLOC_OBJ_PU
Processing Unit, or (Logical) Processor
HWLOC_RESTRICT_FLAG_ADAPT_IOhwloc-2_3_0
Move I/O objects to ancestors if their parents are removed during restriction
HWLOC_RESTRICT_FLAG_ADAPT_MISChwloc-2_3_0
Move Misc objects to ancestors if their parents are removed during restriction
HWLOC_RESTRICT_FLAG_BYNODESEThwloc-2_3_0
Restrict by NUMA node set insted of by CPU set
HWLOC_RESTRICT_FLAG_REMOVE_CPULESShwloc-2_3_0
Remove all objects that became CPU-less
HWLOC_RESTRICT_FLAG_REMOVE_MEMLESShwloc-2_3_0
Remove all objects that became memory-less
HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLISThwloc-2_1_0
Blacklist the target component from being used
HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_IGNORE_MEMORY
Do not export memory information
HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS
Do not export level attributes
HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES
Export extended types such as L2dcache as basic types such as Cache
HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_V1
Export the memory hierarchy as expected in hwloc 1.x
HWLOC_TOPOLOGY_EXPORT_XML_FLAG_V1
Export XML that is loadable by hwloc v1.x
HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDINGhwloc-2_5_0
Do not ever modify the process or thread binding during discovery
HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORThwloc-2_3_0
Import support from the imported topology
HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
Detect the whole system, ignore reservations, include disallowed objects
HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
Assume that the selected backend provides the topology for the system on which we are running
HWLOC_TOPOLOGY_FLAG_NO_CPUKINDShwloc-2_8_0
Ignore CPU kind information from the operating system (and from XML)
HWLOC_TOPOLOGY_FLAG_NO_DISTANCEShwloc-2_8_0
Ignore distance information from the operating system (and from XML)
HWLOC_TOPOLOGY_FLAG_NO_MEMATTRShwloc-2_8_0
Ignore memory attribues from the operating system (and from XML)
HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDINGhwloc-2_5_0
Do not consider resources outside of the process CPU binding
HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDINGhwloc-2_5_0
Do not consider resources outside of the process memory binding
HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES
Get the set of allowed resources from the local operating system even if the topology was loaded from XML or synthetic description
HWLOC_TYPE_DEPTH_BRIDGE
Virtual depth for HWLOC_OBJ_BRIDGE
HWLOC_TYPE_DEPTH_MEMCACHEhwloc-2_1_0
Virtual depth for HWLOC_OBJ_MEMCACHE
HWLOC_TYPE_DEPTH_MISC
Virtual depth for HWLOC_OBJ_MISC
HWLOC_TYPE_DEPTH_MULTIPLE
Objects of given type exist at different depth in the topology (only for Groups)
HWLOC_TYPE_DEPTH_NUMANODE
Virtual depth for HWLOC_OBJ_NUMANODE
HWLOC_TYPE_DEPTH_OS_DEVICE
Virtual depth for HWLOC_OBJ_OS_DEVICE
HWLOC_TYPE_DEPTH_PCI_DEVICE
Virtual depth for HWLOC_OBJ_PCI_DEVICE
HWLOC_TYPE_DEPTH_UNKNOWN
No object of given type exists in the topology
HWLOC_TYPE_FILTER_KEEP_ALL
Keep all objects of this type
HWLOC_TYPE_FILTER_KEEP_IMPORTANT
Only keep likely-important objects of the given type.
HWLOC_TYPE_FILTER_KEEP_NONE
Ignore all objects of this type
HWLOC_TYPE_FILTER_KEEP_STRUCTURE
Only ignore objects if their entire level does not bring any structure
HWLOC_TYPE_UNORDERED
Value returned by hwloc_compare_types() when types can not be compared
HWLOC_UNKNOWN_INDEX
Value of hwloc_obj::os_index when unknown or irrelevant for this object

Functions§

hwloc_alloc
hwloc_alloc_membind
hwloc_bitmap_allbut
hwloc_bitmap_alloc
hwloc_bitmap_alloc_full
hwloc_bitmap_and
hwloc_bitmap_andnot
hwloc_bitmap_clr
hwloc_bitmap_clr_range
hwloc_bitmap_compare
hwloc_bitmap_copy
hwloc_bitmap_dup
hwloc_bitmap_fill
hwloc_bitmap_first
hwloc_bitmap_first_unset
hwloc_bitmap_free
hwloc_bitmap_intersects
hwloc_bitmap_isequal
hwloc_bitmap_isfull
hwloc_bitmap_isincluded
hwloc_bitmap_isset
hwloc_bitmap_iszero
hwloc_bitmap_last
hwloc_bitmap_last_unset
hwloc_bitmap_list_snprintf
hwloc_bitmap_next
hwloc_bitmap_next_unset
hwloc_bitmap_not
hwloc_bitmap_only
hwloc_bitmap_or
hwloc_bitmap_set
hwloc_bitmap_set_range
hwloc_bitmap_singlify
hwloc_bitmap_singlify_per_corehwloc-2_2_0
hwloc_bitmap_weight
hwloc_bitmap_xor
hwloc_bitmap_zero
hwloc_compare_types
Compare the depth of two object types.
hwloc_cpukinds_get_by_cpusethwloc-2_4_0
hwloc_cpukinds_get_infohwloc-2_4_0
hwloc_cpukinds_get_nrhwloc-2_4_0
hwloc_cpukinds_registerhwloc-2_4_0
hwloc_distances_add_commithwloc-2_5_0
hwloc_distances_add_createhwloc-2_5_0
hwloc_distances_add_valueshwloc-2_5_0
hwloc_distances_get
hwloc_distances_get_by_depth
hwloc_distances_get_by_namehwloc-2_1_0
hwloc_distances_get_by_type
hwloc_distances_get_namehwloc-2_1_0
hwloc_distances_release
hwloc_distances_release_removehwloc-2_3_0
hwloc_distances_removehwloc-2_3_0
hwloc_distances_remove_by_depthhwloc-2_3_0
hwloc_distances_transformhwloc-2_5_0
hwloc_free
hwloc_free_xmlbuffer
hwloc_get_api_version
Indicate at runtime which hwloc API version was used at build time
hwloc_get_area_membind
hwloc_get_area_memlocation
hwloc_get_cpubind
hwloc_get_depth_type
hwloc_get_last_cpu_location
hwloc_get_local_numanode_objshwloc-2_3_0
hwloc_get_membind
hwloc_get_memory_parents_depth
hwloc_get_nbobjs_by_depth
hwloc_get_obj_by_depth
hwloc_get_obj_with_same_localityhwloc-2_5_0
hwloc_get_proc_cpubind
hwloc_get_proc_last_cpu_location
hwloc_get_proc_membind
hwloc_get_thread_cpubind
hwloc_get_type_depth
hwloc_linux_get_tid_cpubindLinux
hwloc_linux_get_tid_last_cpu_locationLinux
hwloc_linux_read_path_as_cpumaskLinux
hwloc_linux_set_tid_cpubindLinux
hwloc_memattr_get_best_initiatorhwloc-2_3_0
hwloc_memattr_get_best_targethwloc-2_3_0
hwloc_memattr_get_by_namehwloc-2_3_0
hwloc_memattr_get_flagshwloc-2_3_0
hwloc_memattr_get_initiatorshwloc-2_3_0
hwloc_memattr_get_namehwloc-2_3_0
hwloc_memattr_get_targetshwloc-2_3_0
hwloc_memattr_get_valuehwloc-2_3_0
hwloc_memattr_registerhwloc-2_3_0
hwloc_memattr_set_valuehwloc-2_3_0
hwloc_obj_add_info
hwloc_obj_add_other_obj_setshwloc-2_3_0
hwloc_obj_attr_snprintf
hwloc_obj_set_subtypehwloc-2_11_0
Set (or replace) the subtype of an object.
hwloc_obj_type_is_cache
hwloc_obj_type_is_dcache
hwloc_obj_type_is_icache
hwloc_obj_type_is_io
hwloc_obj_type_is_memory
hwloc_obj_type_is_normal
hwloc_obj_type_snprintf
hwloc_set_area_membind
hwloc_set_cpubind
hwloc_set_membind
hwloc_set_proc_cpubind
hwloc_set_proc_membind
hwloc_set_thread_cpubind
hwloc_topology_abi_check
Check that this topology is compatible with the current hwloc library
hwloc_topology_alloc_group_objecthwloc-2_3_0
hwloc_topology_allowhwloc-2_3_0
hwloc_topology_check
Run internal checks on a topology structure
hwloc_topology_destroy
Terminate and free a topology context
hwloc_topology_dup
Duplicate a topology
hwloc_topology_export_synthetic
hwloc_topology_export_xml
hwloc_topology_export_xmlbuffer
hwloc_topology_free_group_objecthwloc-2_10_0
hwloc_topology_get_allowed_cpuset
hwloc_topology_get_allowed_nodeset
hwloc_topology_get_complete_cpuset
hwloc_topology_get_complete_nodeset
hwloc_topology_get_default_nodesethwloc-2_12_0
Return the set of default NUMA nodes
hwloc_topology_get_depth
hwloc_topology_get_flags
hwloc_topology_get_support
hwloc_topology_get_topology_cpuset
hwloc_topology_get_topology_nodeset
hwloc_topology_get_type_filter
hwloc_topology_init
Allocate a topology context
hwloc_topology_insert_group_objecthwloc-2_3_0
hwloc_topology_insert_misc_objecthwloc-2_3_0
hwloc_topology_is_thissystem
hwloc_topology_load
Build the actual topology
hwloc_topology_refreshhwloc-2_3_0
hwloc_topology_restricthwloc-2_3_0
hwloc_topology_set_all_types_filter
hwloc_topology_set_cache_types_filter
hwloc_topology_set_componentshwloc-2_1_0
hwloc_topology_set_flags
hwloc_topology_set_icache_types_filter
hwloc_topology_set_io_types_filter
hwloc_topology_set_pid
hwloc_topology_set_synthetic
hwloc_topology_set_type_filter
hwloc_topology_set_xml
hwloc_topology_set_xmlbuffer
hwloc_windows_get_nr_processor_groupshwloc-2_5_0 and Windows
hwloc_windows_get_processor_group_cpusethwloc-2_5_0 and Windows

Type Aliases§

PCIDomain
PCI domain width (depends on hwloc version)
hwloc_allow_flags_ehwloc-2_3_0
Flags to be given to hwloc_topology_allow()
hwloc_bitmap_t
Set of bits represented as an opaque pointer to an internal bitmap
hwloc_const_bitmap_t
A non-modifiable hwloc_bitmap_t
hwloc_const_cpuset_t
A non-modifiable hwloc_cpuset_t
hwloc_const_nodeset_t
A non-modifiable hwloc_nodeset_t
hwloc_const_topology_t
A non-modifiable hwloc_topology_t
hwloc_cpubind_flags_t
Process/Thread binding flags
hwloc_cpuset_t
A CPU set is a bitmap whose bits are set according to CPU physical OS indexes
hwloc_distances_add_flag_ehwloc-2_5_0
Flags to be given to hwloc_distances_add_commit()
hwloc_distances_add_handle_thwloc-2_5_0
Handle to a new distances structure during its addition to the topology
hwloc_distances_kind_e
Kinds of distance matrices
hwloc_distances_transform_ehwloc-2_5_0
Transformations of distances structures
hwloc_distrib_flags_e
Flags to be given to hwloc_distrib()
hwloc_get_type_depth_e
Depth of an object (or object type) in the topology
hwloc_local_numanode_flag_ehwloc-2_3_0
Flags for selecting more target NUMA nodes
hwloc_location_type_ehwloc-2_3_0
Type of location
hwloc_memattr_flag_ehwloc-2_3_0
Memory attribute flags
hwloc_memattr_id_thwloc-2_3_0
Memory attribute identifier
hwloc_membind_flags_t
Memory binding flags.
hwloc_membind_policy_t
Memory binding policy.
hwloc_nodeset_t
A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes
hwloc_obj_bridge_type_t
Type of one side (upstream or downstream) of an I/O bridge
hwloc_obj_cache_type_t
Cache type
hwloc_obj_osdev_type_t
Type of a OS device
hwloc_obj_t
Convenience typedef, a pointer to a struct hwloc_obj
hwloc_obj_type_t
Type of topology object
hwloc_pid_t
Process identifier (OS-specific)
hwloc_restrict_flags_ehwloc-2_3_0
Flags to be given to hwloc_topology_restrict()
hwloc_thread_t
Thread identifier (OS-specific)
hwloc_topology_components_flag_ehwloc-2_1_0
Flags to be passed to hwloc_topology_set_components()
hwloc_topology_export_synthetic_flags_e
Flags to be given to hwloc_topology_export_synthetic()
hwloc_topology_export_xml_flags_e
Flags to be given to hwloc_topology_export_xml()
hwloc_topology_flags_e
Topology building configuration flags
hwloc_topology_t
Topology context
hwloc_type_filter_e
Type filtering flags

Unions§

RawDownstreamAttributes
Downstream device attributes
RawUpstreamAttributes
Upstream device attributes
hwloc_location_uhwloc-2_3_0
Actual location
hwloc_obj_attr_u
hwloc_obj_type_t-specific attributes