]> git.saurik.com Git - apple/xnu.git/blobdiff - tools/tests/xnu_quick_test/shared_memory_tests.c
xnu-2422.90.20.tar.gz
[apple/xnu.git] / tools / tests / xnu_quick_test / shared_memory_tests.c
index 362c777edd4d74da0d85493e7342510263ae1911..9467e4d224f34b0f67f582435bfcc1d1e5962a12 100644 (file)
@@ -20,7 +20,8 @@ extern char  g_target_path[ PATH_MAX ];
  *  **************************************************************************************************************
  */
 int shm_tests( void * the_argp )
-{
+{      
+#if !TARGET_OS_EMBEDDED
        int                                     my_err;
        int                                     my_shm_id;
        void *                          my_shm_addr = NULL;
@@ -61,6 +62,13 @@ int shm_tests( void * the_argp )
                printf( "shmdt failed with error %d - \"%s\" \n", errno, strerror( errno) );
                goto test_failed_exit;
        }
+       
+       my_err = shmctl( my_shm_id, IPC_RMID, NULL );
+       if ( my_err == -1 ) {
+               printf("shmctl failed to delete memory segment.\n");
+               goto test_failed_exit;
+       }
+       
        my_shm_addr = NULL;
         
        my_err = 0;
@@ -72,8 +80,13 @@ test_failed_exit:
 test_passed_exit:
        if ( my_shm_addr != NULL ) {
                shmdt( my_shm_addr );
+               shmctl( my_shm_id, IPC_RMID, NULL);
        }
        return( my_err );
+#else
+       printf( "\t--> Not supported on EMBEDDED TARGET\n" );
+       return 0;
+#endif
 }
 
 
@@ -116,6 +129,14 @@ int bsd_shm_tests( void * the_argp )
                printf( "shm_unlink failed with error %d - \"%s\" \n", errno, strerror( errno) );
                goto test_failed_exit;
        }
+
+       /* unlinking a non existent path */
+       my_err = shm_unlink ( "/tmp/anonexistent_shm_oject" );
+       my_err = errno;
+       if ( my_err != ENOENT ) {
+               printf( "shm_unlink of non existent path failed with error %d - \"%s\" \n", errno, strerror( errno) );
+               goto test_failed_exit;
+       }
        
        my_addr = (char *) mmap( NULL, 4096, (PROT_READ | PROT_WRITE), (MAP_FILE | MAP_SHARED), my_fd, 0 );
        if ( my_addr == (char *) -1 ) {