static void * socketmsg_receiving_loop(void * param)
{
    int ret;

    Debug("w1(1-wire) socket receiving thread started!\n");

    while(!g_socketReceivingThreadStopFlag)
    {
        ret = retrieve_socket_msg();

        if (E_SOCKET_PEER_GONE == ret)
        {
            Debug("System error, socket peer is gone, application exit.\n");
            exit(0);
        }
        else if (E_SOCKET_CANNOT_RECV == ret)
        {
            perror("recvmsg error...");
            exit(1);
        }
        else
        {
            Debug(">>>>>>>>>> RECV: socketmsg received, which size is %d \n", ret);
            on_w1_netlinkmsg_received((struct cn_msg *)NLMSG_DATA(nlMsgRecv));
        }
    }

    Debug("w1(1-wire) socket receiving thread stopped!\n");

    sh_signal_notify(&g_socketReceivingThreadStopSignal);

    return 0;
}
void socketmsg_receiving_loop(void * param)
{
	int ret;

	printf("w1 socketmsg receiving thread started!\n");

	while(!receivingThreadStopFlag)
	{
		ret = retrieve_socket_msg(&socketMsgRecv);

		if (E_SOCKET_PEER_GONE == ret) {
			printf("System error, socket peer is gone, application exit.\n");
			exit(0);
		}
		else if (E_SOCKET_CANNOT_RECV == ret) {
			perror("recvmsg error...");
			exit(1);
		}
		else
		{
			//base on the ret size...
			on_w1_msg_received((struct cn_msg *)NLMSG_DATA(nlhdr));
		}
	}

	printf("w1 socketmsg receiving thread stopped!\n");
}