Operating systems, development tools, and professional services
for connected embedded systems

Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation

QNX Developer Support

[Previous] [Contents] [Index] [Next]

resmgr_detach()

Remove a pathname from the pathname space

Synopsis:

#include <sys/iofunc.h>
#include <sys/dispatch.h>

int resmgr_detach( dispatch_t * dpp,
                   int id,
                   unsigned flags );

Arguments:

dpp
A dispatch handle created by dispatch_create().
id
The link ID that resmgr_attach() returned.
flags
Flags that affect the operation. The possible flags (defined in <sys/dispatch.h> and <sys/resmgr.h>) are:
  • _RESMGR_DETACH_ALL -- detach the name from the namespace and invalidate all open bindings.
  • _RESMGR_DETACH_PATHNAME -- detach only the name from the namespace, leaving existing bindings intact. This option is useful when you're unlinking a file or device, and you want to remove the name, but you want processes with open files to continue to use it until they close.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The resmgr_detach() function removes pathname id from the pathname space of context dpp.

Blocking states

The resmgr_detach() function blocks until the RESMGR_HANDLE_T, that's passed to the corresponding resmgr_attach(), isn't being used in any connection function.

The effect that this has on servers is generally minimal. You should follow the following precautions to prevent potential deadlock situations:

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EINVAL
The id was never attached with resmgr_attach().
ENOENT
A previous detachment request is in progress, or the id has already been detached.

Examples:

#include <sys/dispatch.h>
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv ) {
   dispatch_t  *dpp;
   int         id;

   if ( (dpp = dispatch_create()) == NULL ) {
      fprintf( stderr, "%s: Unable to allocate \
               dispatch handle.\n",argv[0] );
      return EXIT_FAILURE;
   }

   id = resmgr_attach ( ... );

   ...

   if ( resmgr_detach( dpp, id, 0) == -1 ) {
      fprintf( stderr, "Failed to remove pathname \
               from the pathname space.\n" );
      return EXIT_FAILURE;
}

For examples using the dispatch interface, see dispatch_create(), message_attach(), resmgr_attach(), and thread_pool_create().

Classification:

QNX Neutrino

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes

See also:

dispatch_create(), resmgr_attach()

"Writing a Resource Manager" chapter of the Programmer's Guide.


[Previous] [Contents] [Index] [Next]