This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs. |
Open a communications channel
struct _Ph_ctrl * PhAttach( char const *name, PhChannelParms_t const *parms );
ph
This function opens a communications channel to a Photon Manager. The channel becomes the current channel.
This is a low-level routine that you aren't likely to call directly. Both PtInit() and PtAppInit() invoke this function. Your application must call one of these functions or PhAttach() before it calls any other Photon functions. |
A Photon channel contains:
PhAttach() doesn't create a channel; if you need to create one, call PhChannelAttach().
The name argument contains the name registered by a Photon Manager. If you pass NULL, the function uses the PHOTON environment variable. If PHOTON isn't set, the function uses /dev/photon instead.
The parms argument lets you fine-tune the resources of the channel. Passing NULL to this argument gets the channel defaults:
If you don't pass NULL for parms, you should pass a pointer to a PhChannelParms_t structure, which contains at least:
unsigned long max_q_entries; unsigned long flags;
where:
If you attach communications channels to multiple Photon managers, you'll have to keep track of which regions belong to which manager. |
A pointer to a control structure.
promiscuous_call( void ) { struct _Ph_ctrl *ph1, *ph2, *ph3; ph1 = PhAttach( NULL, NULL ); if( ph1 ) printf( "ph1 is the current channel to: " "the local Photon kernel\n" ); ph2 = PhAttach( "/dev/photon", NULL ); if( ph2 ) printf( "ph2 is the current channel to: " "the local Photon kernel\n" ); ph3 = PhAttach( "/net/darrin/dev/photon", NULL ); if( ph3 ) printf( "ph3 is the current channel to: " "the Photon kernel on node 83\n" ); if( !ph1 | !ph2 | !ph3 ) return( -1 ); PhReattach( ph1 ); printf( "ph1 is the current channel again\n" ); PhDetach( ph1 ); printf( "there is no current channel\n" ); PhReattach( ph3 ); printf( "ph3 is the current channel again\n" ); PhDetach( ph2 ); PhDetach( ph3 ); printf( "all Photon channels closed\n" ); return( 0 ); }
Photon
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | No |
Thread | No |
PgSetDrawBufferSize(), PhChannelAttach(), PhDetach(), PhEventNext(), PhEventArm(), PhEventRead(), PhGetMsgSize(), PhReattach(), PtInit(), PtAppInit()