![]()  | 
![]()  | 
![]()  | 
![]()  | 
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.
![]()  | 
  | 
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()
![]()  | 
![]()  | 
![]()  | 
![]()  |