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_waitForCardPresent

, SCF_Terminal_waitForCardAbsent

, SCF_Card_waitForCardRemoved

- wait for a card to be inserted or removed

Synopsis

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

SCF_Status_t SCF_Terminal_waitForCardPresent(SCF_Terminal_t terminal,
     unsigned int timeout);
SCF_Status_t SCF_Terminal_waitForCardAbsent(SCF_Terminal_t terminal,
     unsigned int timeout);
SCF_Status_t SCF_Card_waitForCardRemoved(SCF_Card_t card,
     unsigned int timeout);

Parameters

card

A card that was returned from SCF_Terminal_getCard(3SMARTCARD).

terminal

A terminal that was returned from SCF_Session_getTerminal(3SMARTCARD).

timeout

The maximum number or seconds to wait for the desired state to be reached. If the timeout is 0, the function will immediately return SCF_STATUS_TIMEOUT if the terminal or card is not in the desired state. A timeout of SCF_TIMEOUT_MAX can be specified to indicate that the function should never timeout.

Description

These functions determine if a card is currently available in the specified terminal.

The SCF_Card_waitForCardRemoved() function differs from SCF_Terminal_waitForCardAbsent() in that it checks to see if a specific card has been removed. If another card (or even the same card) has since been reinserted, SCF_Card_waitForCardRemoved() will report that the old card was removed, while the SCF_Terminal_waitForCardAbsent() will instead report that there is a card present.

If the desired state is already true, the function will immediately return SCF_STATUS_SUCCESS. Otherwise it will wait for a change to the desired state, or for the timeout to expire, whichever occurs first.

Unlike an event listener (SCF_Terminal_addEventListener(3SMARTCARD)), these functions return the state of the terminal, not just events. To use an electronics analogy, event listeners are edge-triggered, while these functions are level-triggered.

Return Values

If the desired state is reached before the timeout expires, SCF_STATUS_SUCCESS is returned. If the timeout expires, SCF_STATUS_TIMEOUT is returned. Otherwise, an error value is returned.

Errors

These functions will fail if:

SCF_STATUS_BADHANDLE

The specified terminal or card has been closed or is invalid.

SCF_STATUS_COMMERROR

The server closed the connection.

SCF_STATUS_FAILED

An internal error occured.

Examples

Example 1 Determine if a card is currently inserted.

int isCardCurrentlyPresent(SCF_Terminal_t myTerminal) {
    SCF_Status_t status;
 
    /*
     * The timeout of zero makes sure this call will always
     * return immediately.
     */  
    status = SCF_Terminal_waitForCardPresent(myTerminal, 0);
 
    if (status == SCF_STATUS_SUCCESS) return (TRUE);
    else if (status == SCF_STATUS_TIMEOUT) return (FALSE);
 
    /*
     * For other errors, this example just assumes no card
     * is present. We don't really know.
     */
    return (FALSE);
}

Example 2 Remind the user every 5 seconds to remove their card.

SCF_Status_t status;
SCF_Terminal_t myTerminal;
 
/* (...call SCF_Session_getTerminal to open myTerminal...) */
 
status = SCF_Terminal_waitForCardAbsent(myTerminal, 0);
while (status == SCF_STATUS_TIMEOUT) {
    printf("Please remove the card from the terminal!\n");
    status = SCF_Terminal_waitForCardAbsent(myTerminal, 5);
}    
 
if (status == SCF_STATUS_SUCCESS)
    printf("Thank you.\n");
else 
    exit(1);
 
/* ... */

Example 3 Demonstrate the difference between the card-specific and terminal-specific calls.

SCF_Status_t status;
SCF_Terminal_t myTerminal;
SCF_Card_t myCard;

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

status = SCF_Terminal_getCard(myTerminal, &myCard);
if (status != SCF_STATUS_SUCCESS) exit(1);

/*
 * While we sleep, assume user removes the card
 * and inserts another card.
 */
sleep(10);

status = SCF_Terminal_waitForCardAbsent(myTerminal, 0);
/*
 * In this case, status is expected to be SCF_STATUS_TIMEOUT, as there
 * is a card present.
 */

status = SCF_Card_waitForCardRemoved(myCard, 0);
/*
 * In this case, status is expected to be SCF_STATUS_SUCCESS, as the
 * card returned from SCF_Terminal_getCard was indeed removed (even
 * though another card is currently in the terminal).
 */

/* ... */

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_Session_getTerminal(3SMARTCARD), SCF_Terminal_addEventListener(3SMARTCARD), SCF_Terminal_getCard(3SMARTCARD), attributes(5)