Below is the code to print thread id. I am not sure if this function is included in your RDK codebase:
#include <unistd.h> #include <sys/syscall.h> #include <sys/types.h> void OSA_printTID(const char *threadName) { pid_t tid; tid = syscall(SYS_gettid); printf("[HOST] \nThreadName:%s,ThreadID:%d\n",threadName,tid); }
Pls add below line in file /dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis_hdmi_ctrl_priv.c
static void *Vdis_hdmiControlThread(void * ctrlInst)
VDIS_HDMI_CNTRL_INST *pCtrlInst = (VDIS_HDMI_CNTRL_INST *) ctrlInst; int status = OSA_SOK; struct ti81xxhdmi_status hdmiStatus; OSA_MsgHndl *pMsg; int sendEvent; char threadName[128]; snprintf(threadName,sizeof(threadName),"%s_%x",__func__,0); threadName[sizeof(threadName) - 1] = 0; OSA_printTID(threadName);
Note down the thread id in each iteration and then do ls -l /proc/<pid>/task/ and check if the thread id not deleted in each iteration matches the HDMI control thread. Exiting the thread handler function should delete the thread so I am not sure if this is the thread that is not deleted.