JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
man pages section 3: Extended Library Functions     Oracle Solaris 10 1/13 Information Library
search filter icon
search icon

Document Information

Preface

Extended Library Functions - Part 1

Extended Library Functions - Part 2

Extended Library Functions - Part 3

Extended Library Functions - Part 4

Extended Library Functions - Part 5

pool_value_get_type(3POOL)

pool_value_get_uint64(3POOL)

pool_value_set_bool(3POOL)

pool_value_set_double(3POOL)

pool_value_set_int64(3POOL)

pool_value_set_name(3POOL)

pool_value_set_string(3POOL)

pool_value_set_uint64(3POOL)

pool_version(3POOL)

pool_walk_components(3POOL)

pool_walk_pools(3POOL)

pool_walk_properties(3POOL)

pool_walk_resources(3POOL)

pow(3M)

powf(3M)

powl(3M)

ppc_file_start(3TECLA)

ppc_literal_escapes(3TECLA)

printDmiAttributeValues(3DMI)

printDmiDataUnion(3DMI)

printDmiString(3DMI)

Privilege(3PERL)

Project(3PERL)

project_walk(3PROJECT)

ptree_add_node(3PICLTREE)

ptree_add_prop(3PICLTREE)

ptree_add_row_to_table(3PICLTREE)

ptree_create_and_add_node(3PICLTREE)

ptree_create_and_add_prop(3PICLTREE)

ptree_create_node(3PICLTREE)

ptree_create_prop(3PICLTREE)

ptree_create_table(3PICLTREE)

ptree_delete_node(3PICLTREE)

ptree_delete_prop(3PICLTREE)

ptree_destroy_node(3PICLTREE)

ptree_destroy_prop(3PICLTREE)

ptree_find_node(3PICLTREE)

ptree_get_first_prop(3PICLTREE)

ptree_get_frutree_parent(3PICLTREE)

ptree_get_next_by_col(3PICLTREE)

ptree_get_next_by_row(3PICLTREE)

ptree_get_next_prop(3PICLTREE)

ptree_get_node_by_path(3PICLTREE)

ptree_get_prop_by_name(3PICLTREE)

ptree_get_propinfo(3PICLTREE)

ptree_get_propinfo_by_name(3PICLTREE)

ptree_get_propval(3PICLTREE)

ptree_get_propval_by_name(3PICLTREE)

ptree_get_root(3PICLTREE)

ptree_init_propinfo(3PICLTREE)

ptree_post_event(3PICLTREE)

ptree_register_handler(3PICLTREE)

ptree_unregister_handler(3PICLTREE)

ptree_update_propval(3PICLTREE)

ptree_update_propval_by_name(3PICLTREE)

ptree_walk_tree_by_class(3PICLTREE)

rd_delete(3EXT)

rd_errstr(3EXT)

rd_event_addr(3EXT)

rd_event_enable(3EXT)

rd_event_getmsg(3EXT)

rd_init(3EXT)

rd_loadobj_iter(3EXT)

rd_log(3EXT)

rd_new(3EXT)

rd_objpad_enable(3EXT)

rd_plt_resolution(3EXT)

rd_reset(3EXT)

read_vtoc(3EXT)

reg_ci_callback(3DMI)

regexpr(3GEN)

remainder(3M)

remainderf(3M)

remainderl(3M)

remquo(3M)

remquof(3M)

remquol(3M)

rint(3M)

rintf(3M)

rintl(3M)

rmdirp(3GEN)

round(3M)

roundf(3M)

roundl(3M)

rsm_create_localmemory_handle(3RSM)

rsm_free_interconnect_topology(3RSM)

rsm_free_localmemory_handle(3RSM)

rsm_get_controller(3RSM)

rsm_get_controller_attr(3RSM)

rsm_get_interconnect_topology(3RSM)

rsm_get_segmentid_range(3RSM)

rsm_intr_signal_post(3RSM)

rsm_intr_signal_wait(3RSM)

rsm_intr_signal_wait_pollfd(3RSM)

rsm_memseg_export_create(3RSM)

rsm_memseg_export_destroy(3RSM)

rsm_memseg_export_publish(3RSM)

rsm_memseg_export_rebind(3RSM)

rsm_memseg_export_republish(3RSM)

rsm_memseg_export_unpublish(3RSM)

rsm_memseg_get_pollfd(3RSM)

rsm_memseg_import_close_barrier(3RSM)

rsm_memseg_import_connect(3RSM)

rsm_memseg_import_destroy_barrier(3RSM)

rsm_memseg_import_disconnect(3RSM)

rsm_memseg_import_get16(3RSM)

rsm_memseg_import_get32(3RSM)

rsm_memseg_import_get(3RSM)

rsm_memseg_import_get64(3RSM)

rsm_memseg_import_get8(3RSM)

rsm_memseg_import_get_mode(3RSM)

rsm_memseg_import_getv(3RSM)

rsm_memseg_import_init_barrier(3RSM)

rsm_memseg_import_map(3RSM)

rsm_memseg_import_open_barrier(3RSM)

rsm_memseg_import_order_barrier(3RSM)

rsm_memseg_import_put16(3RSM)

rsm_memseg_import_put32(3RSM)

rsm_memseg_import_put(3RSM)

rsm_memseg_import_put64(3RSM)

rsm_memseg_import_put8(3RSM)

rsm_memseg_import_putv(3RSM)

rsm_memseg_import_set_mode(3RSM)

rsm_memseg_import_unmap(3RSM)

rsm_memseg_release_pollfd(3RSM)

rsm_release_controller(3RSM)

rtld_audit(3EXT)

rtld_db(3EXT)

sbcleartos(3TSOL)

sbltos(3TSOL)

sbsltos(3TSOL)

scalb(3M)

scalbf(3M)

scalbl(3M)

scalbln(3M)

scalblnf(3M)

scalblnl(3M)

scalbn(3M)

scalbnf(3M)

scalbnl(3M)

SCF_Card_close(3SMARTCARD)

SCF_Card_exchangeAPDU(3SMARTCARD)

SCF_Card_freeInfo(3SMARTCARD)

SCF_Card_getInfo(3SMARTCARD)

SCF_Card_lock(3SMARTCARD)

SCF_Card_reset(3SMARTCARD)

SCF_Card_unlock(3SMARTCARD)

SCF_Card_waitForCardRemoved(3SMARTCARD)

scf_entry_add_value(3SCF)

scf_entry_create(3SCF)

scf_entry_destroy(3SCF)

scf_entry_destroy_children(3SCF)

scf_entry_handle(3SCF)

scf_entry_reset(3SCF)

scf_error(3SCF)

scf_handle_bind(3SCF)

scf_handle_create(3SCF)

scf_handle_decode_fmri(3SCF)

scf_handle_decorate(3SCF)

scf_handle_destroy(3SCF)

scf_handle_get_scope(3SCF)

scf_handle_unbind(3SCF)

scf_instance_add_pg(3SCF)

scf_instance_create(3SCF)

scf_instance_delete(3SCF)

scf_instance_destroy(3SCF)

scf_instance_get_name(3SCF)

scf_instance_get_parent(3SCF)

scf_instance_get_pg(3SCF)

scf_instance_get_pg_composed(3SCF)

scf_instance_get_snapshot(3SCF)

scf_instance_handle(3SCF)

scf_instance_to_fmri(3SCF)

scf_iter_create(3SCF)

scf_iter_destroy(3SCF)

scf_iter_handle(3SCF)

scf_iter_handle_scopes(3SCF)

scf_iter_instance_pgs(3SCF)

scf_iter_instance_pgs_composed(3SCF)

scf_iter_instance_pgs_typed(3SCF)

scf_iter_instance_pgs_typed_composed(3SCF)

scf_iter_instance_snapshots(3SCF)

scf_iter_next_instance(3SCF)

scf_iter_next_pg(3SCF)

scf_iter_next_property(3SCF)

scf_iter_next_scope(3SCF)

scf_iter_next_service(3SCF)

scf_iter_next_snapshot(3SCF)

scf_iter_next_value(3SCF)

scf_iter_pg_properties(3SCF)

scf_iter_property_values(3SCF)

scf_iter_reset(3SCF)

scf_iter_scope_services(3SCF)

scf_iter_service_instances(3SCF)

scf_iter_service_pgs(3SCF)

scf_iter_service_pgs_typed(3SCF)

scf_iter_snaplevel_pgs(3SCF)

scf_iter_snaplevel_pgs_typed(3SCF)

scf_limit(3SCF)

scf_myname(3SCF)

scf_pg_create(3SCF)

scf_pg_delete(3SCF)

scf_pg_destroy(3SCF)

scf_pg_get_flags(3SCF)

scf_pg_get_name(3SCF)

scf_pg_get_parent_instance(3SCF)

scf_pg_get_parent_service(3SCF)

scf_pg_get_parent_snaplevel(3SCF)

scf_pg_get_property(3SCF)

scf_pg_get_type(3SCF)

scf_pg_get_underlying_pg(3SCF)

scf_pg_handle(3SCF)

scf_pg_to_fmri(3SCF)

scf_pg_update(3SCF)

scf_property_create(3SCF)

scf_property_destroy(3SCF)

scf_property_get_name(3SCF)

scf_property_get_value(3SCF)

scf_property_handle(3SCF)

scf_property_is_type(3SCF)

scf_property_to_fmri(3SCF)

scf_property_type(3SCF)

scf_scope_add_service(3SCF)

scf_scope_create(3SCF)

scf_scope_destroy(3SCF)

scf_scope_get_name(3SCF)

scf_scope_get_service(3SCF)

scf_scope_handle(3SCF)

scf_scope_to_fmri(3SCF)

scf_service_add_instance(3SCF)

scf_service_add_pg(3SCF)

scf_service_create(3SCF)

scf_service_delete(3SCF)

scf_service_destroy(3SCF)

scf_service_get_instance(3SCF)

scf_service_get_name(3SCF)

scf_service_get_parent(3SCF)

scf_service_get_pg(3SCF)

scf_service_handle(3SCF)

scf_service_to_fmri(3SCF)

SCF_Session_close(3SMARTCARD)

SCF_Session_freeInfo(3SMARTCARD)

SCF_Session_getInfo(3SMARTCARD)

SCF_Session_getSession(3SMARTCARD)

SCF_Session_getTerminal(3SMARTCARD)

scf_simple_app_props_free(3SCF)

scf_simple_app_props_get(3SCF)

scf_simple_app_props_next(3SCF)

scf_simple_app_props_search(3SCF)

scf_simple_prop_free(3SCF)

scf_simple_prop_get(3SCF)

scf_simple_prop_name(3SCF)

scf_simple_prop_next_astring(3SCF)

scf_simple_prop_next_boolean(3SCF)

scf_simple_prop_next_count(3SCF)

scf_simple_prop_next_integer(3SCF)

scf_simple_prop_next_opaque(3SCF)

scf_simple_prop_next_reset(3SCF)

scf_simple_prop_next_time(3SCF)

scf_simple_prop_next_ustring(3SCF)

scf_simple_prop_numvalues(3SCF)

scf_simple_prop_pgname(3SCF)

scf_simple_prop_type(3SCF)

scf_simple_walk_instances(3SCF)

scf_snaplevel_create(3SCF)

scf_snaplevel_destroy(3SCF)

scf_snaplevel_get_instance_name(3SCF)

scf_snaplevel_get_next_snaplevel(3SCF)

scf_snaplevel_get_parent(3SCF)

scf_snaplevel_get_pg(3SCF)

scf_snaplevel_get_scope_name(3SCF)

scf_snaplevel_get_service_name(3SCF)

scf_snaplevel_handle(3SCF)

scf_snapshot_create(3SCF)

scf_snapshot_destroy(3SCF)

scf_snapshot_get_base_snaplevel(3SCF)

scf_snapshot_get_name(3SCF)

scf_snapshot_get_parent(3SCF)

scf_snapshot_handle(3SCF)

scf_snapshot_update(3SCF)

scf_strerror(3SCF)

SCF_strerror(3SMARTCARD)

SCF_Terminal_addEventListener(3SMARTCARD)

SCF_Terminal_close(3SMARTCARD)

SCF_Terminal_freeInfo(3SMARTCARD)

SCF_Terminal_getCard(3SMARTCARD)

SCF_Terminal_getInfo(3SMARTCARD)

SCF_Terminal_removeEventListener(3SMARTCARD)

SCF_Terminal_updateEventListener(3SMARTCARD)

SCF_Terminal_waitForCardAbsent(3SMARTCARD)

SCF_Terminal_waitForCardPresent(3SMARTCARD)

scf_transaction_commit(3SCF)

scf_transaction_create(3SCF)

scf_transaction_destroy(3SCF)

scf_transaction_destroy_children(3SCF)

scf_transaction_handle(3SCF)

scf_transaction_property_change(3SCF)

scf_transaction_property_change_type(3SCF)

scf_transaction_property_delete(3SCF)

scf_transaction_property_new(3SCF)

scf_transaction_reset(3SCF)

scf_transaction_reset_all(3SCF)

scf_transaction_start(3SCF)

scf_type_base_type(3SCF)

scf_value_base_type(3SCF)

scf_value_create(3SCF)

scf_value_destroy(3SCF)

scf_value_get_as_string(3SCF)

scf_value_get_as_string_typed(3SCF)

scf_value_get_astring(3SCF)

scf_value_get_boolean(3SCF)

scf_value_get_count(3SCF)

scf_value_get_integer(3SCF)

scf_value_get_opaque(3SCF)

scf_value_get_time(3SCF)

scf_value_get_ustring(3SCF)

scf_value_handle(3SCF)

scf_value_is_type(3SCF)

scf_value_reset(3SCF)

scf_value_set_astring(3SCF)

scf_value_set_boolean(3SCF)

scf_value_set_count(3SCF)

scf_value_set_from_string(3SCF)

scf_value_set_integer(3SCF)

scf_value_set_opaque(3SCF)

scf_value_set_time(3SCF)

scf_value_set_ustring(3SCF)

scf_value_type(3SCF)

sendfile(3EXT)

sendfilev(3EXT)

setac(3BSM)

setauclass(3BSM)

setauevent(3BSM)

setauthattr(3SECDB)

setauuser(3BSM)

setexecattr(3SECDB)

setflabel(3TSOL)

setprofattr(3SECDB)

setproject(3PROJECT)

setprojent(3PROJECT)

setuserattr(3SECDB)

sha1(3EXT)

SHA1Final(3EXT)

SHA1Init(3EXT)

SHA1Update(3EXT)

sha2(3EXT)

SHA256Final(3EXT)

SHA256Init(3EXT)

SHA256Update(3EXT)

SHA2Final(3EXT)

SHA2Init(3EXT)

SHA2Update(3EXT)

SHA384Final(3EXT)

SHA384Init(3EXT)

SHA384Update(3EXT)

SHA512Final(3EXT)

SHA512Init(3EXT)

SHA512Update(3EXT)

signbit(3M)

significand(3M)

significandf(3M)

significandl(3M)

Extended Library Functions - Part 6

SCF_Terminal_addEventListener

, SCF_Terminal_updateEventListener

, SCF_Terminal_removeEventListener

- receive asychronous event notification

Synopsis

cc [ flag… ] file-lsmartcard [ library…] 
#include <smartcard/scf.h>

SCF_Status_t SCF_Terminal_addEventListener(SCF_Terminal_t terminal,
     SCF_Event_t events, void(*callback)
     (SCF_Event_t, SCF_Terminal_t, void *), void *userData, SCF_ListenerHandle_t *listenerHandle);
SCF_Status_t SCF_Terminal_updateEventListener(SCF_Terminal_t terminal,
     SCF_ListenerHandle_t listenerHandle, SCF_Event_t events);
SCF_Status_t SCF_Terminal_removeEventListener(SCF_Terminal_t terminal,
     SCF_ListenerHandle_t listenerHandle);

Parameters

terminal

A terminal (from SCF_Session_getTerminal(3SMARTCARD)) to which the event listener should be added or removed.

events

Events to deliver to the callback. An event will not be delivered if it is not listed. The caller can register for multiple events by performing a bitwise OR of the desired events. The valid events are:

SCF_EVENT_ALL

All of the events listed below will be delivered.

SCF_EVENT_CARDINSERTED

A smartcard was inserted into the terminal.

SCF_EVENT_CARDREMOVED

A smartcard was removed from the terminal.

SCF_EVENT_CARDPRESENT

Indicates that a card was present in the terminal when the event listener was first added. This event allows event listeners to determine the initial state of the terminal before an insert or remove event occurs. Either this event or the SCF_EVENT_CARDABSENT (see below) event will be delivered only once upon adding an event listener and immediately before any other events are delivered. Future card movements will generate SCF_EVENT_CARDINSERTED and SCF_EVENT_CARDREMOVED events, but not SCF_EVENT_CARDPRESENT or SCF_EVENT_CARDABSENT events. An event listener can assume that if a SCF_EVENT_CARDPRESENT event is delivered, the next card movement event will be a SCF_EVENT_CARDREMOVED.

SCF_EVENT_CARDABSENT

Indicates that a card was not present in the terminal when the event listener was first added. This event allows event listeners to determine the initial state of the terminal before an insert or remove event occurs. Either this event or the SCF_EVENT_CARDPRESENT event (see above) will be delivered only once upon adding an event listener and immediately before any other events are delivered. Future card movements will generate SCF_EVENT_CARDINSERTED and SCF_EVENT_CARDREMOVED events, but not SCF_EVENT_CARDPRESENT or SCF_EVENT_CARDABSENT events. An event listener can assume that if a SCF_EVENT_CARDABSENT event is delivered, the next card movement event will be a SCF_EVENT_CARDINSERTED.

SCF_EVENT_CARDRESET

The smartcard currently present has been reset (see SCF_Card_reset(3SMARTCARD)).

SCF_EVENT_TERMINALCLOSED

The terminal is in the process of being closed (due to a call to SCF_Session_close(3SMARTCARD) or SCF_Terminal_close(3SMARTCARD)), so no further events will be delivered. The terminal argument provided to the callback will still be valid.

SCF_EVENT_COMMERROR

The connection to the server has been lost. No further events will be delivered.

callback

A function pointer that will be executed when the desired event occurs. The function must take three arguments. The first is a SCF_Event_t containing the event that occured. The second argument is an SCF_Terminal_t containing the terminal on which the event occured. The third is a void * that can be used to provide arbitrary data to the callback when it is executed.

userData

A pointer to arbitrary user data. The data is not accessed by the library. The pointer is simply provided to the callback when an event is issued. This argument can safely be set to NULL if not needed. The callback must be able to handle this case.

listenerHandle

A unique “key” that is provided by SCF_Terminal_addEventListener() to refer to a specific event listener registration. This allows multiple event listeners to be selectivly updated or removed.

Description

These functions allow an application to receive notification of events on a terminal as they occur. The concept is similar to a signal handler. When an event occurs, a thread in the SCF library will execute the provided callback function. Once added, the listener will receive events until it is removed or either the terminal or session is closed.

When the callback function is executed, the callback arguments specify the event that occured and the terminal on which it occurred. Additionally, each callback will receive the userData pointer that was provided when the listener was added. The library does not make a copy of the memory pointed to by userData, so applications must take care not to deallocate that memory until it is known that the callback will no longer access it (for example, by removing the event listener). Each invocation of the callback will be for exactly one event. If the library needs to deliver multiple events, they will be dispatched one at a time. Because the callback is executed from a thread, any operations it performs must be thread safe. For each callback registration, the library creates a new thread to deliver events to that callback. The callback is expected to perform minimal work and return quickly.

An application can add multiple callbacks on a terminal. Any event that occurs will be delivered to all listeners that registered for that event type. The same callback can be registered multiple times. Each call to SCF_Terminal_addEventListener() will result in a new SCF_ListenerHandle_t. The events a callback receives can be changed by calling SCF_Terminal_updateEventListener() with the handle that was returned when the listener was initially added. If the listener is set to receive no events (that is, the events parameter has no bits set), the listener will remain registered but will not receive any events. To remove a listener and release allocated resources, use SCF_Terminal_removeEventListener() or close the terminal.

Return Values

If the event listener was successfully added or removed, SCF_STATUS_SUCCESS is returned. Otherwise, an error value is returned and the internal list of registered event listeners remains unaltered.

Errors

These functions will fail if:

SCF_STATUS_BADARGS

The callback function pointer and/or listenerHandle is null, or an unknown event was specified.

SCF_STATUS_BADHANDLE

The specified terminal has been closed or is invalid, or the event listener handle could not be found to update or remove.

SCF_STATUS_COMMERROR

The connection to the server was lost.

SCF_STATUS_FAILED

An internal error occurred.

Examples

Example 1 Register for card movements.

struct myState_t {
    int isStateKnown;
    int isCardPresent;
};

void myCallback(SCF_Event_t event, SCF_Terminal_t eventTerminal,
    void *data) {
    struct myState_t *state = data;
    if (event == SCF_EVENT_CARDINSERTED) {
        printf("--- Card inserted ---\n");
        state->isCardPresent = 1;
    }
    else if (event == SCF_EVENT_CARDREMOVED) {
        printf("--- Card removed ---\n");
        state->isCardPresent = 0;
    }
    state->isStateKnown = 1;
}

main() {
    SCF_Status_t status;
    SCF_Terminal_t myTerminal;
    SCF_ListenerHandle_t myListener;
    struct myState_t myState;

    /* (...call SCF_Session_getTerminal to open myTerminal...) */

    myState.isStateKnown = 0;
    status = SCF_Terminal_addEventListener(myTerminal,
        SCF_EVENT_CARDINSERTED|SCF_EVENT_CARDREMOVED, &myCallback,
        &myState, &myListener);
    if (status != SCF_STATUS_SUCCESS) exit(1);

    while(1) {
        if (!myState.isStateKnown)
            printf("Waiting for first event...\n");
        else {
            if (myState.isCardPresent)
                printf("Card is present.\n");
            else
                printf("Card is not present.\n");
        }
        sleep(1);
    }
}

Example 2 Use different callbacks for each event.

void myInsertCallback(SCF_Event_t event, SCF_Terminal_t eventTerminal,
    void *data) {

    /* ... */
}

void myRemoveCallback(SCF_Event_t event, SCF_Terminal_t eventTerminal,
    void *data) {
    /* ... */
}

main () {
    SCF_Status_t status;
    SCF_Terminal_t terminal;
    SCF_ListenerHandle_t myListener1, myListener2, myListener3;
    int foo, bar;

    /* (...call SCF_Session_getTerminal to open myTerminal...) */

    status = SCF_Terminal_addEventListener(myTerminal,
        SCF_EVENT_CARDINSERTED, &myInsertCallback, &foo,
        &myListener1);
    if (status != SCF_STATUS_SUCCESS) exit(1);

    status = SCF_Terminal_addEventListener(myTerminal,
        SCF_EVENT_CARDREMOVED, &myRemoveCallback, &foo,
        &myListener2);
    if (status != SCF_STATUS_SUCCESS) exit(1);

    status = SCF_Terminal_addEventListener(myTerminal,
        SCF_EVENT_CARDREMOVED, &myRemoveCallback, &bar,
        &myListener3);
    if (status != SCF_STATUS_SUCCESS) exit(1);

    /*
     * At this point, when each insertion occurs, myInsertCallback
     * will be called once (with a pointer to foo). When each removal
     * occurs, myRemoveCallback will be called twice. One call will
     * be given a pointer to foo, and the other will be given a
     * pointer to bar.
     */  

    status = SCF_Terminal_removeEventListener(myTerminal,
        myListener2);
    if (status != SCF_STATUS_SUCCESS) exit(1);

    /*
     * Now, when a removal occurs, myRemoveCallback will only be
     * called once, with a pointer to bar.
     */  

    /* ... */
}

Example 3 Use initial state events to show user the terminal state in a GUI.

void myCallback(SCF_Event_t event, SCF_Terminal_t eventTerminal,
    void *unused) {
    if (event == SCF_EVENT_CARDPRESENT) {
        /* Set initial icon to a terminal with a card present. */
    }
    else if (event == SCF_EVENT_CARDABSENT) {                   
        /* Set initial icon to a terminal without a card present. */
    }
    else if (event == SCF_EVENT_CARDINSERTED) {
        /* Show animation for card being inserted into a terminal. */
    }
    else if (event == SCF_EVENT_CARDREMOVED) {
        /* Show animation for card being removed from a terminal. */
    }
}
 
main() {
    SCF_Terminal_t myTerminal;
    SCF_ListenerHandle_t myListener;
 
    /* (...call SCF_Session_getTerminal to open myTerminal...) */
 
    status = SCF_Terminal_addEventListener(myTerminal,
        SCF_EVENT_ALL, &myCallback, NULL, &myListener);
    if (status != SCF_STATUS_SUCCESS) exit(1);
 
 
    /* ... */
}

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Evolving
MT-Level
MT-Safe

See Also

libsmartcard(3LIB), SCF_Card_reset(3SMARTCARD), SCF_Session_close(3SMARTCARD), SCF_Session_getTerminal(3SMARTCARD), SCF_Terminal_updateEventListener(3SMARTCARD), SCF_Terminal_close(3SMARTCARD), SCF_Terminal_removeEventListener(3SMARTCARD), attributes(5)