Open a communications channel
struct _Ph_ctrl *PhAttach(
char const *name,
PhChannelParms_t const *parms );
This function opens a communications channel to a Photon Manager. The channel becomes the current channel.
![]() |
The application must call the PhAttach() function before it calls any other Photon functions. Both PtInit() and PtAppInit() invoke this function. |
A Photon channel contains:
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 to parms, you should pass a pointer to a PhChannelParms_t structure, which contains at least:
mpid_t proxy; 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( "//83/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(), PhDetach(), PhEventNext(), PhEventArm(), PhEventRead(), PhGetMsgSize(), PhReattach(), PtInit(), PtAppInit()