arm4.h
Go to the documentation of this file.
00001 /* ------------------------------------------------------------------------- */ 00002 /* */ 00003 /* Copyright (c) 2003-2007 The Open Group */ 00004 /* */ 00005 /* Permission is hereby granted, free of charge, to any person obtaining a */ 00006 /* copy of this software (the "Software"), to deal in the Software without */ 00007 /* restriction, including without limitation the rights to use, copy, */ 00008 /* modify, merge, publish, distribute, sublicense, and/or sell copies of */ 00009 /* the Software, and to permit persons to whom the Software is furnished */ 00010 /* to do so, subject to the following conditions: */ 00011 /* */ 00012 /* The above copyright notice and this permission notice shall be included */ 00013 /* in all copies or substantial portions of the Software. */ 00014 /* */ 00015 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS */ 00016 /* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ 00017 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ 00018 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ 00019 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT */ 00020 /* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR */ 00021 /* THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 00022 /* */ 00023 /* ------------------------------------------------------------------------- */ 00024 /* */ 00025 /* This file corresponds to following documentation: */ 00026 /* */ 00027 /* Technical Standard */ 00028 /* Application Response Measurement (ARM) */ 00029 /* Issue 4.1 Version 1 - C Binding */ 00030 /* */ 00031 /* ------------------------------------------------------------------------- */ 00032 00046 #ifndef ARM4_H_INCLUDED 00047 #define ARM4_H_INCLUDED 00048 00049 #ifndef ARM4OS_H_INCLUDED 00050 #include "arm4os.h" 00051 #endif /* ARM4OS_H_INCLUDED */ 00052 00053 #ifdef __cplusplus 00054 extern "C" { 00055 #endif /* __cplusplus */ 00056 00057 /* ------------------------------------------------------------------------- */ 00058 /* ---------------------------- defines section ---------------------------- */ 00059 /* ------------------------------------------------------------------------- */ 00060 00063 /* ----------------------------- Boolean values ----------------------------- */ 00064 00068 #define ARM_FALSE 0 00069 00072 #define ARM_TRUE 1 00073 00074 /* --------------------------- Transaction status --------------------------- */ 00075 00079 #define ARM_STATUS_GOOD 0 00080 00087 #define ARM_STATUS_ABORTED 1 00088 00091 #define ARM_STATUS_FAILED 2 00092 00101 #define ARM_STATUS_UNKNOWN 3 00102 00103 /* ----------------------- Reserved error codes range ----------------------- */ 00104 00108 #define ARM_ERROR_CODE_RESERVED_MIN -20999 00109 00112 #define ARM_ERROR_CODE_RESERVED_MAX -20000 00113 00114 /* ------------------------ known sub-buffer formats ------------------------ */ 00115 00120 #define ARM_SUBBUFFER_USER 3 00121 00125 #define ARM_SUBBUFFER_ARRIVAL_TIME 4 00126 00130 #define ARM_SUBBUFFER_METRIC_VALUES 5 00131 00135 #define ARM_SUBBUFFER_SYSTEM_ADDRESS 6 00136 00140 #define ARM_SUBBUFFER_DIAG_DETAIL 7 00141 00146 #define ARM_SUBBUFFER_APP_IDENTITY 102 00147 00151 #define ARM_SUBBUFFER_APP_CONTEXT 103 00152 00156 #define ARM_SUBBUFFER_TRAN_IDENTITY 104 00157 00161 #define ARM_SUBBUFFER_TRAN_CONTEXT 105 00162 00166 #define ARM_SUBBUFFER_METRIC_BINDINGS 106 00167 00171 #define ARM_SUBBUFFER_CHARSET 107 00172 00173 /* ----------------------------- metric defines ----------------------------- */ 00174 00179 #define ARM_METRIC_FORMAT_RESERVED 0 00180 00184 #define ARM_METRIC_FORMAT_COUNTER32 1 00185 00189 #define ARM_METRIC_FORMAT_COUNTER64 2 00190 00194 #define ARM_METRIC_FORMAT_CNTRDIVR32 3 00195 00199 #define ARM_METRIC_FORMAT_GAUGE32 4 00200 00204 #define ARM_METRIC_FORMAT_GAUGE64 5 00205 00209 #define ARM_METRIC_FORMAT_GAUGEDIVR32 6 00210 00214 #define ARM_METRIC_FORMAT_NUMERICID32 7 00215 00219 #define ARM_METRIC_FORMAT_NUMERICID64 8 00220 /* format 9 (string8) is deprecated */ 00226 #define ARM_METRIC_FORMAT_STRING32 10 00227 00234 #define ARM_METRIC_USE_GENERAL 0 00235 00244 #define ARM_METRIC_USE_TRAN_SIZE 1 00245 00254 #define ARM_METRIC_USE_TRAN_STATUS 2 00255 00260 #define ARM_METRIC_MIN_ARRAY_INDEX 0 00261 00265 #define ARM_METRIC_MAX_ARRAY_INDEX 6 00266 00270 #define ARM_METRIC_MAX_COUNT 7 00271 00276 #define ARM_METRIC_STRING32_MAX_CHARS 31 00277 00281 #define ARM_METRIC_STRING32_MAX_LENGTH \ 00282 (ARM_METRIC_STRING32_MAX_CHARS*3+1) 00283 00284 /* -------------------------- misc string defines --------------------------- */ 00285 00289 #define ARM_NAME_MAX_CHARS 127 00290 00293 #define ARM_NAME_MAX_LENGTH (ARM_NAME_MAX_CHARS*3+1) 00294 00298 #define ARM_DIAG_DETAIL_MAX_CHARS 4095 00299 00302 #define ARM_DIAG_DETAIL_MAX_LENGTH (ARM_DIAG_DETAIL_MAX_CHARS*3+1) 00303 00307 #define ARM_MSG_BUFFER_CHARS 255 00308 00311 #define ARM_MSG_BUFFER_LENGTH (ARM_MSG_BUFFER_CHARS*3+1) 00312 00313 00314 /* --------------------------- properties defines --------------------------- */ 00315 00320 #define ARM_PROPERTY_MIN_ARRAY_INDEX 0 00321 00325 #define ARM_PROPERTY_MAX_ARRAY_INDEX 19 00326 00330 #define ARM_PROPERTY_MAX_COUNT 20 00331 00336 #define ARM_PROPERTY_NAME_MAX_CHARS (ARM_NAME_MAX_CHARS) 00337 00341 #define ARM_PROPERTY_NAME_MAX_LENGTH \ 00342 (ARM_PROPERTY_NAME_MAX_CHARS*3+1) 00343 00347 #define ARM_PROPERTY_VALUE_MAX_CHARS 255 00348 00352 #define ARM_PROPERTY_VALUE_MAX_LENGTH \ 00353 (ARM_PROPERTY_VALUE_MAX_CHARS*3+1) 00354 00359 #define ARM_PROPERTY_URI_MAX_CHARS 4095 00360 00364 #define ARM_PROPERTY_URI_MAX_LENGTH (ARM_PROPERTY_URI_MAX_CHARS*3+1) 00365 00366 00367 /* ---------------------- system address format values ---------------------- */ 00368 00372 #define ARM_SYSADDR_FORMAT_RESERVED 0 00373 00378 #define ARM_SYSADDR_FORMAT_IPV4 1 00379 00385 #define ARM_SYSADDR_FORMAT_IPV4PORT 2 00386 00391 #define ARM_SYSADDR_FORMAT_IPV6 3 00392 00398 #define ARM_SYSADDR_FORMAT_IPV6PORT 4 00399 00405 #define ARM_SYSADDR_FORMAT_SNA 5 00406 00412 #define ARM_SYSADDR_FORMAT_X25 6 00413 00419 #define ARM_SYSADDR_FORMAT_HOSTNAME 7 00420 00427 #define ARM_SYSADDR_FORMAT_UUID 8 00428 00429 /* ------------------------ mandatory charsets ------------------------------ */ 00430 00431 /* IANA charset MIBenum numbers (http://www.iana.org/) */ 00435 #define ARM_CHARSET_ASCII 3 00436 00439 #define ARM_CHARSET_UTF8 106 00440 00443 #define ARM_CHARSET_UTF16BE 1013 00444 00448 #define ARM_CHARSET_UTF16LE 1014 00449 00452 #define ARM_CHARSET_UTF16 1015 00453 00456 #define ARM_CHARSET_IBM037 2028 00457 00460 #define ARM_CHARSET_IBM1047 2102 00461 00462 /* -------------------- flags to be passed on API calls --------------------- */ 00463 00467 #define ARM_FLAG_NONE (0x00000000) 00468 00481 #define ARM_FLAG_TRACE_REQUEST (0x00000001) 00482 00489 #define ARM_FLAG_BIND_THREAD (0x00000002) 00490 00506 #define ARM_FLAG_CORR_IN_PROCESS (0x00000004) 00507 00508 /* --------------------------- correlator defines --------------------------- */ 00509 00513 #define ARM_CORR_MAX_LENGTH 512 00514 00519 #define ARM_CORR_FLAGNUM_APP_TRACE 1 00520 00524 #define ARM_CORR_FLAGNUM_AGENT_TRACE 2 00525 00530 #define ARM_CORR_NONE ((arm_correlator_t *) NULL) 00531 00532 /* ---------- current time for arm_report_transaction() stop time ----------- */ 00533 00538 #define ARM_USE_CURRENT_TIME ((arm_stop_time_t)-1) 00539 00540 /* ------------------------------ misc defines ------------------------------ */ 00541 00546 #define ARM_BUF4_NONE ((arm_buffer4_t*) NULL) 00547 00552 #define ARM_ID_NONE ((arm_id_t *) NULL) 00553 00557 #define ARM_STRING_NONE ((arm_char_t *) NULL) 00558 00561 /* -------------------------------------------------------------------------- */ 00562 /* ------------------------- basic typedef section -------------------------- */ 00563 /* -------------------------------------------------------------------------- */ 00564 00565 /* ARM4_*INT* defines are set in the <arm4os.h> header file. 00566 They are platform/compiler-specific. */ 00567 typedef ARM4_CHAR arm_char_t; 00569 typedef ARM4_INT8 arm_int8_t; 00570 typedef ARM4_UINT8 arm_uint8_t; 00572 typedef ARM4_INT16 arm_int16_t; 00573 typedef ARM4_UINT16 arm_uint16_t; 00575 typedef ARM4_INT32 arm_int32_t; 00576 typedef ARM4_UINT32 arm_uint32_t; 00578 typedef ARM4_INT64 arm_int64_t; 00579 typedef ARM4_UINT64 arm_uint64_t; 00581 typedef arm_int32_t arm_boolean_t; 00582 typedef arm_int32_t arm_error_t; 00584 typedef arm_int64_t arm_arrival_time_t; 00585 typedef arm_int64_t arm_stop_time_t; 00586 typedef arm_int64_t arm_response_time_t; 00588 typedef arm_int32_t arm_tran_status_t; 00589 typedef arm_int32_t arm_charset_t; 00590 typedef arm_int32_t arm_sysaddr_format_t; 00595 typedef arm_char_t arm_message_buffer_t[ARM_MSG_BUFFER_LENGTH]; 00596 00597 00598 typedef arm_int32_t arm_subbuffer_format_t; 00600 typedef arm_uint8_t arm_metric_format_t; 00601 typedef arm_uint8_t arm_metric_slot_t; 00602 typedef arm_int16_t arm_metric_usage_t; 00604 typedef arm_int64_t arm_app_start_handle_t; 00605 typedef arm_int64_t arm_tran_start_handle_t; 00606 typedef arm_int64_t arm_tran_block_handle_t; 00608 typedef arm_int16_t arm_correlator_length_t; 00610 /* -------------------------------------------------------------------------- */ 00611 /* ----------------------- compound typedefs section ------------------------ */ 00612 /* -------------------------------------------------------------------------- */ 00613 00620 typedef struct arm_id 00621 { 00625 union 00626 { 00627 arm_uint8_t uint8[16]; 00628 arm_uint32_t uint32[4]; 00629 arm_uint64_t uint64[2]; 00630 } id_u; 00631 } arm_id_t; 00632 00636 typedef struct arm_correlator 00637 { 00640 arm_uint8_t opaque[ARM_CORR_MAX_LENGTH]; 00641 } arm_correlator_t; 00642 00643 /* ----------------------- user defined metric types ------------------------ */ 00644 00649 typedef arm_int32_t arm_metric_counter32_t; 00654 typedef arm_int64_t arm_metric_counter64_t; 00659 typedef arm_int32_t arm_metric_divisor32_t; 00664 typedef arm_int32_t arm_metric_gauge32_t; 00669 typedef arm_int64_t arm_metric_gauge64_t; 00674 typedef arm_int32_t arm_metric_numericID32_t; 00679 typedef arm_int64_t arm_metric_numericID64_t; 00684 typedef const arm_char_t *arm_metric_string32_t; 00685 00691 typedef struct arm_metric_cntrdivr32 00692 { 00696 arm_metric_counter32_t counter; 00700 arm_metric_divisor32_t divisor; 00701 } arm_metric_cntrdivr32_t; 00707 typedef struct arm_metric_gaugedivr32 00708 { 00712 arm_metric_gauge32_t gauge; 00716 arm_metric_divisor32_t divisor; 00717 } arm_metric_gaugedivr32_t; 00718 00725 typedef struct arm_metric 00726 { 00734 arm_metric_slot_t slot; 00751 arm_metric_format_t format; 00761 arm_metric_usage_t usage; 00766 arm_boolean_t valid; 00771 union 00772 { 00773 arm_metric_counter32_t counter32; 00774 arm_metric_counter64_t counter64; 00775 arm_metric_cntrdivr32_t counterdivisor32; 00776 arm_metric_gauge32_t gauge32; 00777 arm_metric_gauge64_t gauge64; 00778 arm_metric_gaugedivr32_t gaugedivisor32; 00779 arm_metric_numericID32_t numericid32; 00780 arm_metric_numericID64_t numericid64; 00781 arm_metric_string32_t string32; 00782 } metric_u; 00783 } arm_metric_t; 00784 00791 typedef struct arm_metric_binding 00792 { 00798 arm_metric_slot_t slot; 00803 arm_id_t id; 00804 } arm_metric_binding_t; 00805 00811 typedef struct arm_property 00812 { 00820 const arm_char_t *name; 00828 const arm_char_t *value; 00829 } arm_property_t; 00830 00831 /* ------------------------------------------------------------------------- */ 00832 /* ---------------------- sub-buffer typedefs section ---------------------- */ 00833 /* ------------------------------------------------------------------------- */ 00834 00842 typedef struct arm_subbuffer { 00846 arm_subbuffer_format_t format; 00847 } arm_subbuffer_t; 00848 00859 #define ARM_SB(x) (&((x).header)) 00860 00884 typedef struct arm_buffer4 00885 { 00889 arm_int32_t count; 00896 arm_subbuffer_t **subbuffer_array; 00897 } arm_buffer4_t; 00898 00899 /* ------------------------------------------------------------------------- */ 00900 00951 typedef struct arm_subbuffer_charset 00952 { 00956 arm_subbuffer_t header; 00957 00961 arm_charset_t charset; 00966 arm_int32_t flags; 00967 } arm_subbuffer_charset_t; 00968 00994 typedef struct arm_subbuffer_app_identity 00995 { 00999 arm_subbuffer_t header; 01003 arm_int32_t identity_property_count; 01023 const arm_property_t *identity_property_array; 01027 arm_int32_t context_name_count; 01048 const arm_char_t **context_name_array; 01049 } arm_subbuffer_app_identity_t; 01050 01068 typedef struct arm_subbuffer_app_context 01069 { 01073 arm_subbuffer_t header; 01074 01078 arm_int32_t context_value_count; 01094 const arm_char_t **context_value_array; 01095 } arm_subbuffer_app_context_t; 01096 01120 typedef struct arm_subbuffer_tran_identity 01121 { 01125 arm_subbuffer_t header; 01126 01130 arm_int32_t identity_property_count; 01150 const arm_property_t *identity_property_array; 01154 arm_int32_t context_name_count; 01175 const arm_char_t **context_name_array; 01181 const arm_char_t *uri; 01182 } arm_subbuffer_tran_identity_t; 01183 01202 typedef struct arm_subbuffer_tran_context 01203 { 01207 arm_subbuffer_t header; 01208 01212 arm_int32_t context_value_count; 01228 const arm_char_t **context_value_array; 01239 const arm_char_t *uri; 01240 } arm_subbuffer_tran_context_t; 01241 01265 typedef struct arm_subbuffer_arrival_time 01266 { 01270 arm_subbuffer_t header; 01275 arm_arrival_time_t opaque_time; 01276 } arm_subbuffer_arrival_time_t; 01277 01306 typedef struct arm_subbuffer_metric_bindings 01307 { 01311 arm_subbuffer_t header; 01312 01316 arm_int32_t count; 01321 const arm_metric_binding_t *metric_binding_array; 01322 } arm_subbuffer_metric_bindings_t; 01323 01333 typedef struct arm_subbuffer_metric_values 01334 { 01338 arm_subbuffer_t header; 01339 01343 arm_int32_t count; 01348 const arm_metric_t *metric_value_array; 01349 } arm_subbuffer_metric_values_t; 01350 01360 typedef struct arm_subbuffer_user 01361 { 01365 arm_subbuffer_t header; 01366 01372 const arm_char_t *name; 01376 arm_boolean_t id_valid; 01381 arm_id_t id; 01382 } arm_subbuffer_user_t; 01383 01417 typedef struct arm_subbuffer_system_address 01418 { 01422 arm_subbuffer_t header; 01423 01436 arm_int16_t address_format; 01442 arm_int16_t address_length; 01449 const arm_uint8_t *address; 01454 arm_boolean_t id_valid; 01464 arm_id_t id; 01465 } arm_subbuffer_system_address_t; 01466 01481 typedef struct arm_subbuffer_diag_detail 01482 { 01486 arm_subbuffer_t header; 01487 01494 const arm_char_t *diag_detail; 01495 } arm_subbuffer_diag_detail_t; 01496 01497 /* -------------------------------------------------------------------------- */ 01498 /* ---------------------------- ARM4 API section ---------------------------- */ 01499 /* -------------------------------------------------------------------------- */ 01500 01501 /* -------------------- register metadata API functions --------------------- */ 01502 01570 ARM4_API_DYNAMIC(arm_error_t) 01571 arm_register_application( 01572 const arm_char_t *app_name, 01573 const arm_id_t *input_app_id, 01574 const arm_int32_t flags, 01575 const arm_buffer4_t *buffer4, 01576 arm_id_t *output_app_id); 01577 01619 ARM4_API_DYNAMIC(arm_error_t) 01620 arm_destroy_application( 01621 const arm_id_t *app_id, 01622 const arm_int32_t flags, 01623 const arm_buffer4_t *buffer4); 01624 01681 ARM4_API_DYNAMIC(arm_error_t) 01682 arm_register_transaction( 01683 const arm_id_t *app_id, 01684 const arm_char_t *tran_name, 01685 const arm_id_t *input_tran_id, 01686 const arm_int32_t flags, 01687 const arm_buffer4_t *buffer4, 01688 arm_id_t *output_tran_id); 01689 01781 ARM4_API_DYNAMIC(arm_error_t) 01782 arm_register_metric( 01783 const arm_id_t *app_id, 01784 const arm_char_t *metric_name, 01785 const arm_metric_format_t metric_format, 01786 const arm_metric_usage_t metric_usage, 01787 const arm_char_t *metric_unit, 01788 const arm_id_t *input_metric_id, 01789 const arm_int32_t flags, 01790 const arm_buffer4_t *buffer4, 01791 arm_id_t *output_metric_id); 01792 01902 ARM4_API_DYNAMIC(arm_error_t) 01903 arm_start_application( 01904 const arm_id_t *app_id, 01905 const arm_char_t *app_group, 01906 const arm_char_t *app_instance, 01907 const arm_int32_t flags, 01908 const arm_buffer4_t *buffer4, 01909 arm_app_start_handle_t *app_handle); 01910 01955 ARM4_API_DYNAMIC(arm_error_t) 01956 arm_stop_application( 01957 const arm_app_start_handle_t app_handle, 01958 const arm_int32_t flags, 01959 const arm_buffer4_t *buffer4); 01960 02059 ARM4_API_DYNAMIC(arm_error_t) 02060 arm_start_transaction( 02061 const arm_app_start_handle_t app_handle, 02062 const arm_id_t *tran_id, 02063 const arm_correlator_t *parent_correlator, 02064 const arm_int32_t flags, 02065 const arm_buffer4_t *buffer4, 02066 arm_tran_start_handle_t *tran_handle, 02067 arm_correlator_t *current_correlator); 02068 02120 ARM4_API_DYNAMIC(arm_error_t) 02121 arm_stop_transaction( 02122 const arm_tran_start_handle_t tran_handle, 02123 const arm_tran_status_t tran_status, 02124 const arm_int32_t flags, 02125 const arm_buffer4_t *buffer4); 02126 02160 ARM4_API_DYNAMIC(arm_error_t) 02161 arm_update_transaction( 02162 const arm_tran_start_handle_t tran_handle, 02163 const arm_int32_t flags, 02164 const arm_buffer4_t *buffer4); 02165 02206 ARM4_API_DYNAMIC(arm_error_t) 02207 arm_discard_transaction( 02208 const arm_tran_start_handle_t tran_handle, 02209 const arm_int32_t flags, 02210 const arm_buffer4_t *buffer4); 02211 02272 ARM4_API_DYNAMIC(arm_error_t) 02273 arm_block_transaction( 02274 const arm_tran_start_handle_t tran_handle, 02275 const arm_int32_t flags, 02276 const arm_buffer4_t *buffer4, 02277 arm_tran_block_handle_t *block_handle); 02278 02326 ARM4_API_DYNAMIC(arm_error_t) 02327 arm_unblock_transaction( 02328 const arm_tran_start_handle_t tran_handle, 02329 const arm_tran_block_handle_t block_handle, 02330 const arm_int32_t flags, 02331 const arm_buffer4_t *buffer4); 02332 02333 /* thread support API functions */ 02372 ARM4_API_DYNAMIC(arm_error_t) 02373 arm_bind_thread( 02374 const arm_tran_start_handle_t tran_handle, 02375 const arm_int32_t flags, 02376 const arm_buffer4_t *buffer4); 02377 02420 ARM4_API_DYNAMIC(arm_error_t) 02421 arm_unbind_thread( 02422 const arm_tran_start_handle_t tran_handle, 02423 const arm_int32_t flags, 02424 const arm_buffer4_t *buffer4); 02425 02513 ARM4_API_DYNAMIC(arm_error_t) 02514 arm_report_transaction( 02515 const arm_app_start_handle_t app_handle, 02516 const arm_id_t *tran_id, 02517 const arm_tran_status_t tran_status, 02518 const arm_response_time_t response_time, 02519 const arm_stop_time_t stop_time, 02520 const arm_correlator_t *parent_correlator, 02521 const arm_correlator_t *current_correlator, 02522 const arm_int32_t flags, 02523 const arm_buffer4_t *buffer4); 02524 02525 /* correlator API functions */ 02656 ARM4_API_DYNAMIC(arm_error_t) 02657 arm_generate_correlator( 02658 const arm_app_start_handle_t app_handle, 02659 const arm_id_t *tran_id, 02660 const arm_correlator_t *parent_correlator, 02661 const arm_int32_t flags, 02662 const arm_buffer4_t *buffer4, 02663 arm_correlator_t *current_correlator); 02664 02700 ARM4_API_DYNAMIC(arm_error_t) 02701 arm_get_correlator_length( 02702 const arm_correlator_t *correlator, 02703 arm_correlator_length_t *length); 02704 02742 ARM4_API_DYNAMIC(arm_error_t) 02743 arm_get_correlator_flags( 02744 const arm_correlator_t *correlator, 02745 const arm_int32_t corr_flag_num, 02746 arm_boolean_t *flag); 02747 02748 /* ---------------------- miscellaneous API functions ---------------------- */ 02749 02780 ARM4_API_DYNAMIC(arm_error_t) 02781 arm_get_arrival_time( 02782 arm_arrival_time_t *opaque_time); 02783 02830 ARM4_API_DYNAMIC(arm_error_t) 02831 arm_get_error_message( 02832 const arm_charset_t charset, 02833 const arm_error_t code, 02834 arm_message_buffer_t msg); 02835 02891 ARM4_API_DYNAMIC(arm_error_t) 02892 arm_is_charset_supported( 02893 const arm_charset_t charset, 02894 arm_boolean_t *supported); 02895 02896 #ifdef __cplusplus 02897 } 02898 #endif /* __cplusplus */ 02899 02900 #ifndef ARM4DYN_H_INCLUDED 02901 #include "arm4dyn.h" 02902 #endif /* !ARM4DYN_H_INCLUDED */ 02903 02904 #endif /* ARM4_H_INCLUDED */ 02905 02906
