Hi all,

I'm having 2 troubles regarding calling Data Model paths.

  1. I'm running my demon program on RDK OS, armv7 Broadcom based (Vantiva CGA437 box).
    When calling dmcli I always get 102 error: "Ccsp msg bus internal error 102".
    BUT, when I've compiled a small 'main' program with the same code, it works perfectly fine.
    Here's the code:

    #define _GNU_SOURCE
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <unistd.h>
    #include <errno.h>
    #include <rbus.h>
     
    int main(int argc, char *argv[])
    {
        int ret = -1;
        FILE *pipe = NULL;
        char buffer[256] = {0};
        char cmd[] = "dmcli eRT getv Device.DeviceInfo.SerialNumber";
     
        pipe = popen(cmd, "r");
        if(NULL == pipe) {
            printf("Pipe is NULL. popen() failed. Error: %d\n", errno);
            return ret;
        }
     
        while (NULL != fgets(buffer, sizeof(buffer), pipe)) {
            printf("buffer: %s\n", buffer);
        }
     
        pclose(pipe);
     
        return ret;
    }



    Also running "dmcli eRT getv Device.DeviceInfo.SerialNumber" through shell command or through system() will fail.
    I've no clue about the implementation of dmcli, so I'm here for some help.
    Should I call the dmcli in different manner? Is there something my demon does not correctly?
  2. I have another problem trying to use librbus. 
    When I try to rbus_open(), the program immediately inflates in its VSZ by 18MB. That's way too much.
    Here's the program:

    #define _GNU_SOURCE
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <unistd.h>
    #include <rbus.h>
     
    rbusHandle_t handle;
     
    int main(int argc, char *argv[])
    {
       rbus_open(&handle, "mytest");
     
       while (true) {
           sleep(100);
       }
    }

    The VSZ here 22100KB. Once I remove the rbus_open() it'll be 4684KB.
    Please advice, is there any compilation that should be different? Some flags? 
  • No labels