Beispiel #1
0
/*
 *  ======== ListMP_open ========
 */
Int ListMP_open(String name, ListMP_Handle *handlePtr)
{
    SharedRegion_SRPtr sharedShmBase;
    Ptr sharedAddr;
    Int status;

    /* Assert that a pointer has been supplied */
    Assert_isTrue(handlePtr != NULL, ti_sdo_ipc_Ipc_A_nullArgument);
    
    /* Assert that we have enough information to open the gate */
    Assert_isTrue(name != NULL, ti_sdo_ipc_Ipc_A_invParam);

    /* Search NameServer */
    status = NameServer_getUInt32((NameServer_Handle)ListMP_module->nameServer,
                                  name,
                                  &sharedShmBase,
                                  ti_sdo_utils_MultiProc_procIdList);

    if (status < 0) {
        /* Name was not found */
        *handlePtr = NULL;
        return (ListMP_E_NOTFOUND);
    }

    sharedAddr = SharedRegion_getPtr(sharedShmBase);
    
    status = ListMP_openByAddr(sharedAddr, handlePtr);

    return (status);
}
Beispiel #2
0
/*
 *  ======== SemaphoreMP_open ========
 */
Int SemaphoreMP_open(String name,
                   SemaphoreMP_Handle *handlePtr)
{
    SharedRegion_SRPtr sharedShmBase;
    Int status;
    Ptr sharedAddr;
    Error_Block eb;

    Error_init(&eb);

    /* Assert that a pointer has been supplied */
    Assert_isTrue(handlePtr != NULL, ti_sdo_ipc_Ipc_A_nullArgument);

    /* Assert that a name has been supplied */
    Assert_isTrue(name != NULL, ti_sdo_ipc_Ipc_A_invParam);

    /* Open by name */
    status = NameServer_getUInt32((NameServer_Handle)
            SemaphoreMP_module->nameServer, name, &sharedShmBase, NULL);

    if (status < 0) {
        /* Name not found. */
        *handlePtr = NULL;
        return (-1); //TODO
    }

    sharedAddr = SharedRegion_getPtr(sharedShmBase);

    status = SemaphoreMP_openByAddr(sharedAddr, handlePtr);

    return (status);
}
Beispiel #3
0
/*
 *  ======== MessageQ_open ========
 */
Int MessageQ_open(String name, MessageQ_QueueId *queueId)
{
    Int         status;
    Error_Block eb;

    Assert_isTrue(name != NULL, ti_sdo_ipc_MessageQ_A_invalidParam);
    Assert_isTrue(queueId != NULL, ti_sdo_ipc_MessageQ_A_invalidParam);

    Error_init(&eb);
    
    /* Search NameServer */
    status = NameServer_getUInt32(
            (NameServer_Handle)MessageQ_module->nameServer, name, queueId, 
            NULL);

    if (status >= 0) {
        return (MessageQ_S_SUCCESS);    /* name found */
    }
    else {
        return (MessageQ_E_NOTFOUND);   /* name not found */
    }
}
Beispiel #4
0
/** ============================================================================
 *  Globals
 *  ============================================================================
 */
Int nameLenTest()
{
    NameServer_Params params;
    NameServer_Handle nsHandle;
    Int32 status = 0;
    UInt32 val;

    Log_print0(Diags_INFO, "Testing long names...\n");
#if 0 /* Commented out due to assertion thrown when name length > maxNameLen */
    NameServer_Params_init(&params);

    params.maxValueLen = sizeof(UInt32);
    params.maxNameLen = 32;

    nsHandle = NameServer_create(NSLONGNAME, &params);
    if (nsHandle == NULL) {
        Log_print1(Diags_INFO, "Failed to create NameServer '%s'\n",
            (IArg)NSLONGNAME);
        return -1;
    }
    else {
        printf("Created NameServer '%s'\n", NSLONGNAME);
    }

    /* This name should be too long for creation params and results in error */
    printf("Trying to add a name that exceeds maxNameLen...\n");
    ptr = NameServer_addUInt32(nsHandle, NSLONGNAME, 0xdeadbeef);
    if (ptr == NULL) {
        Log_print0(Diags_INFO,
            "    ...got expected Failure from NameServer_addUInt32()\n");
    }
    else {
        Log_print1(Diags_INFO,
            "    Error: NameServer_addUInt32() returned non-NULL %p (but "
            "was expected to fail)\n", (IArg)ptr);
        NameServer_delete(&nsHandle);
        return -1;
    }

    Log_print0(Diags_INFO, "Deleting nsHandle...\n");
    NameServer_delete(&nsHandle);
#endif
    NameServer_Params_init(&params);

    params.maxValueLen = sizeof(UInt32);
    params.maxNameLen = 180;

    nsHandle = NameServer_create(NSNAME, &params);
    if (nsHandle == NULL) {
        Log_print1(Diags_INFO, "Failed to create NameServer '%s'\n",
            (IArg)NSNAME);
        return -1;
    }
    else {
        Log_print1(Diags_INFO, "Created NameServer '%s'\n", (IArg)NSNAME);
    }

    /* This name is too long for remote to handle and results in error */
    Log_print0(Diags_INFO,
        "Trying to get a name that the remote cannot handle...\n");
    val = 0x00c0ffee;
    status = NameServer_getUInt32(nsHandle, NSLONGNAME, &val, NULL);
    if (status == NameServer_E_NAMETOOLONG) {
        Log_print0(Diags_INFO,
            "    ...got expected Failure from NameServer_getUInt32()\n");
    }
    else {
        Log_print1(Diags_INFO,
            "    Error: NameServer_getUint32() returned unexpected "
            "result: %d\n", (IArg)status);
        return -1;
    }

    Log_print0(Diags_INFO, "Deleting nsHandle...\n");
    NameServer_delete(&nsHandle);

    NameServer_Params_init(&params);

    params.maxValueLen = sizeof(UInt32);
    params.maxNameLen = 32;

    nsHandle = NameServer_create(NSLONGNAME, &params);
    if (nsHandle == NULL) {
        Log_print1(Diags_INFO, "Failed to create NameServer '%s'\n",
            (IArg)NSLONGNAME);
        return -1;
    }
    else {
        Log_print1(Diags_INFO, "Created NameServer '%s'\n", (IArg)NSLONGNAME);
    }

    /* The instance name is too long for remote and results in error */
    Log_print0(Diags_INFO,
        "Trying to use an instance name that the remote cannot handle...\n");
    val = 0x00c0ffee;
    status = NameServer_getUInt32(nsHandle, "Key", &val, NULL);
    if (status == NameServer_E_NAMETOOLONG) {
        Log_print0(Diags_INFO,
            "    ...got expected Failure from NameServer_getUInt32()\n");
    }
    else {
        Log_print1(Diags_INFO,
            "    Error: NameServer_getUint32() returned unexpected "
            "result: %d\n", (IArg)status);
        return -1;
    }

    Log_print0(Diags_INFO, "Deleting nsHandle...\n");
    NameServer_delete(&nsHandle);

    return 0;
}
Beispiel #5
0
Int testNS(NameServer_Handle nsHandle, String name)
{
    Int32 status = 0;
    Ptr ptr;
    UInt32 val;
    char key[16];
    Int i;

    ptr = NameServer_addUInt32(nsHandle, name, 0xdeadbeef);
    if (ptr == NULL) {
        Log_print0(Diags_INFO, "Failed to NameServer_addUInt32()\n");
        return -1;
    }
    else {
        Log_print1(Diags_INFO, "NameServer_addUInt32() returned %p\n", (IArg)ptr);
    }

    Log_print0(Diags_INFO, "Trying to add same key (should fail)...\n");
    ptr = NameServer_addUInt32(nsHandle, name, 0xdeadc0de);
    if (ptr == NULL) {
        Log_print0(Diags_INFO, " ...got expected Failure from NameServer_addUInt32()\n");
    }
    else {
        Log_print1(Diags_INFO, "    Error: NameServer_addUInt32() returned non-NULL %p (but was expected to fail)\n", (IArg)ptr);
        return -1;
    }

    val = 0x00c0ffee;
    status = NameServer_getUInt32(nsHandle, name, &val, NULL);
    Log_print2(Diags_INFO, "NameServer_getUInt32() returned %d, val=0x%x (was 0x00c0ffee)\n", status, val);

    Log_print0(Diags_INFO, "Removing 0xdeadbeef w/ NameServer_remove()...\n");
    status = NameServer_remove(nsHandle, name);
    if (status < 0) {
        Log_print1(Diags_INFO, "NameServer_remove() failed: %d\n", status);
        return -1;
    }

    ptr = NameServer_addUInt32(nsHandle, name, 0xdeadc0de);
    if (ptr == NULL) {
        Log_print0(Diags_INFO, "Error: NameServer_addUInt32() failed\n");
        return -1;
    }
    else {
        Log_print0(Diags_INFO, "NameServer_addUInt32(0xdeadc0de) succeeded\n");
    }

    val = 0x00c0ffee;
    status = NameServer_getUInt32(nsHandle, name, &val, NULL);
    Log_print2(Diags_INFO, "NameServer_getUInt32() returned %d, val=0x%x (was 0x00c0ffee)\n", status, val);

    Log_print0(Diags_INFO, "Removing 0xdeadc0de w/ NameServer_removeEntry()...\n");
    status = NameServer_removeEntry(nsHandle, ptr);
    if (status < 0) {
        Log_print1(Diags_INFO, "NameServer_remove() failed: %d\n", status);
        return -1;
    }

    ptr = NameServer_addUInt32(nsHandle, name, 0x0badc0de);
    if (ptr == NULL) {
        Log_print0(Diags_INFO, "Error: NameServer_addUInt32() failed\n");
        return -1;
    }
    else {
        Log_print0(Diags_INFO, "NameServer_addUInt32(0x0badc0de) succeeded\n");
    }

    val = 0x00c0ffee;
    status = NameServer_getUInt32(nsHandle, name, &val, NULL);
    Log_print2(Diags_INFO, "NameServer_getUInt32() returned %d, val=0x%x (was 0x00c0ffee)\n", status, val);

    status = NameServer_remove(nsHandle, name);
    if (status < 0) {
        Log_print0(Diags_INFO, "Error: NameServer_remove() failed\n");
        return -1;
    }
    else {
        Log_print1(Diags_INFO, "NameServer_remove(%s) succeeded\n", (IArg)name);
    }

    for (i = 0; i < 10; i++) {
        sprintf(key, "foobar%d", i);

        ptr = NameServer_addUInt32(nsHandle, key, 0x0badc0de + i);
        if (ptr == NULL) {
            Log_print0(Diags_INFO, "Error: NameServer_addUInt32() failed\n");
            return -1;
        }
        else {
            Log_print2(Diags_INFO, "NameServer_addUInt32(%s, 0x%x) succeeded\n", (IArg)key, 0x0badc0de + i);
        }

        val = 0x00c0ffee;
        status = NameServer_getUInt32(nsHandle, key, &val, NULL);
        Log_print3(Diags_INFO, "NameServer_getUInt32(%s) returned %d, val=0x%x (was 0x00c0ffee)\n", (IArg)key, status, val);

        if (val != (0x0badc0de + i)) {
            Log_print2(Diags_INFO, "get val (0x%x) != add val (0x%x)!\n", val, 0x0badc0de + i);
        }
    }

    for (i = 0; i < 10; i++) {
        sprintf(key, "foobar%d", i);

        status = NameServer_remove(nsHandle, key);
        if (status < 0) {
            Log_print0(Diags_INFO, "Error: NameServer_remove() failed\n");
            return -1;
        }
        else {
            Log_print1(Diags_INFO, "NameServer_remove(%s) succeeded\n", (IArg)key);
        }
    }

    return 0;
}