コード例 #1
0
SyntroCVCamConsole::SyntroCVCamConsole(bool daemonMode, QObject *parent)
    : QThread(parent)
{
	m_daemonMode = daemonMode;

	m_logTag = PRODUCT_TYPE;
	m_fps = 0;
	m_frameCount = 0;

	m_camera = NULL;

	if (m_daemonMode) {
		registerSigHandler();

		if (daemon(1, 1)) {
			perror("daemon");
			return;
		}
	}

	SyntroUtils::syntroAppInit();

	m_client = new CameraClient(this);
	m_client->resumeThread();

	if (m_daemonMode)
		m_frameRateTimer = 0;
	else
		m_frameRateTimer = startTimer(STAT_REFRESH_SECS * SYNTRO_CLOCKS_PER_SEC);

	m_frameRefreshTimer = startTimer(SYNTRO_CLOCKS_PER_SEC / FRAME_RATE_DIVISOR);

	start();
}
コード例 #2
0
SyntroHAServer::SyntroHAServer(bool daemonMode, QObject *parent) : QThread(parent)
{
    m_daemonMode = daemonMode;

#ifndef WIN32
    if (m_daemonMode) {
        registerSigHandler();

        if (daemon(1, 1)) {
            perror("daemon");
            return;
        }
    }
#endif

    SyntroUtils::syntroAppInit();

    m_client = new HAClient(this);
    m_insteonDriver = new InsteonDriver();

    connect(m_insteonDriver, SIGNAL(newSyntroUpdate(QJsonObject)), m_client, SLOT(newSyntroUpdate(QJsonObject)));
    connect(m_client, SIGNAL(setDeviceLevel(int, int)), m_insteonDriver, SLOT(setDeviceLevel(int, int)));

    m_client->resumeThread();
    m_insteonDriver->resumeThread();
	start();
}
コード例 #3
0
SyntroLCamConsole::SyntroLCamConsole(bool daemonMode, QObject *parent)
	: QThread(parent)
{
	m_daemonMode = daemonMode;

    m_computedFrameRate = 0.0;
	m_frameCount = 0;
	m_frameRateTimer = 0;
	m_camera = NULL;
    m_audio = NULL;

	m_client = NULL;

    m_width = 0;
    m_height = 0;
    m_framerate = 0;

#ifndef WIN32
	if (m_daemonMode) {
		registerSigHandler();
		
		if (daemon(1, 1)) {
			perror("daemon");
			return;
		}
	}
#endif

	connect((QCoreApplication *)parent, SIGNAL(aboutToQuit()), this, SLOT(aboutToQuit()));

    SyntroUtils::syntroAppInit();

    m_client = new CamClient(this);
	m_client->resumeThread();

    if (!m_daemonMode) {
        m_frameCount = 0;
        m_frameRateTimer = startTimer(FRAME_RATE_TIMER_INTERVAL * 1000);
    }

	start();
}
コード例 #4
0
ファイル: atrace.c プロジェクト: mer-tools/atrace
int main(int argc, char **argv)
{
    bool isRoot = (getuid() == 0);

    if (argc == 2 && 0 == strcmp(argv[1], "--help")) {
        showHelp(argv[0]);
        exit(0);
    }

    for (;;) {
        int ret;

        ret = getopt(argc, argv, "b:gcidflst:wz");

        if (ret < 0) {
            break;
        }

        switch(ret) {
            case 'g':
                if (!isRoot) {
                    fprintf(stderr, "error: tracing GPU power state requires root privileges\n");
                    exit(1);
                }
                g_traceGpuPower = true;
            break;

            case 'b':
                g_traceBufferSizeKB = atoi(optarg);
            break;

            case 'c':
                g_traceOverwrite = true;
            break;

            case 'i':
                g_traceCpuIdle = true;
            break;

            case 'l':
                g_traceGovernorLoad = true;
            break;

            case 'd':
                if (!isRoot) {
                    fprintf(stderr, "error: tracing disk activity requires root privileges\n");
                    exit(1);
                }
                g_traceDisk = true;
            break;

            case 'f':
                g_traceCpuFrequency = true;
            break;

            case 's':
                g_traceSchedSwitch = true;
            break;

            case 't':
                g_traceDurationSeconds = atoi(optarg);
            break;

            case 'w':
                if (!isRoot) {
                    fprintf(stderr, "error: tracing kernel work queues requires root privileges\n");
                    exit(1);
                }
                g_traceWorkqueue = true;
            break;

            case 'z':
                g_compress = true;
            break;

            default:
                fprintf(stderr, "\n");
                showHelp(argv[0]);
                exit(-1);
            break;
        }
    }

    registerSigHandler();

    bool ok = startTrace(isRoot);

    if (ok) {
        printf("capturing trace...");
        fflush(stdout);

        // We clear the trace after starting it because tracing gets enabled for
        // each CPU individually in the kernel. Having the beginning of the trace
        // contain entries from only one CPU can cause "begin" entries without a
        // matching "end" entry to show up if a task gets migrated from one CPU to
        // another.
        ok = clearTrace();

        if (ok) {
            // Sleep to allow the trace to be captured.
            struct timespec timeLeft;
            timeLeft.tv_sec = g_traceDurationSeconds;
            timeLeft.tv_nsec = 0;
            do {
                if (g_traceAborted) {
                    break;
                }
            } while (nanosleep(&timeLeft, &timeLeft) == -1 && errno == EINTR);
        }
    }

    // Stop the trace and restore the default settings.
    stopTrace(isRoot);

    if (ok) {
        if (!g_traceAborted) {
            printf(" done\nTRACE:\n");
            fflush(stdout);
            dumpTrace();
        } else {
            printf("\ntrace aborted.\n");
            fflush(stdout);
        }
        clearTrace();
    } else {
        fprintf(stderr, "unable to start tracing\n");
    }

    // Reset the trace buffer size to 1.
    setTraceBufferSizeKB(1);

    return g_traceAborted ? 1 : 0;
}