Портирование приложения с кодом C++ из Solaris в Linux и проблемы с заголовками в реальном времени

Пожалуйста, помогите, инструменты, которые я использую - kdevelop и qt4. На моем main.cpp есть ошибки, например;


Error: sys/procset.h: No such files or directory
Error: sys/priocntl.h: No such files or directory
Error: sys/tspriocntl.h: No such files or directory
Error: sys/rtpriocntl.h: No such files or directory
In function 'int main(int. char**)':
Error: 'pcparms_t' was not declared in this scope
Error: expected ';' before 'pcparms'
Error: 'rtparms_t' was not declared in this scope
Error: 'rtparmsp' was not declared in this scope
Error: 'pcinfo_t' was not declared in this scope
Error: expected ';' before 'pcinfo'
Error: 'rtinfo_t' was not declared in this scope
Error: 'rtinfop' was not declared in this scope
warning: unused variable 'lret'
warning: unused variable 'priority'
...
...
...
*Exited with Status:2 *

Я не могу найти эти заголовки в реальном времени на моем Centos 5 Linux. Кроме того, я не знаю эквивалентности вышеупомянутых заголовков для Linux. Я знаю, что должен добавить оператор If для Solaris и Linux для заголовков include, и я не знаю, какие заголовки будут включены в оператор if / else.

Когда я удаляю заголовки, комментируя их заголовки в реальном времени и функцию для функции реального времени для соляриса, я запускаю его.


//pcparms_t pcparms;
//rtparms_t *rtparmsp;
//pcinfo_t pcinfo;
//rtinfo_t *rtinfop;

Моя проблема в том, каковы заголовки и функции реального времени для Linux или эквивалент для Linux. Мой код приложения представляет собой смесь между C++ и qt4. На стороне qt4 есть ли необходимость использовать функции реального времени? На C++ от Solaris мне нужны функции реального времени? Если да, где я могу их найти или как они называются и где их разместить?

1 ответ

На самом деле это не вопрос QT, а скорее вопрос переноса Solaris->Linux.

sys/procset.h
sys/priocntl.h
sys/tspriocntl.h
sys/rtpriocntl.h

Все эти файлы относятся к системным вызовам Solaris. Они являются частью универсального управления планировщиком процессов priocntlset.

Из справочной страницы

priocntlset(2)           System Calls           priocntlset(2)

NAME
       priocntlset - generalized process scheduler control

SYNOPSIS
       #include <sys/types.h>
       #include <sys/procset.h>
       #include <sys/priocntl.h>
       #include <sys/rtpriocntl.h>
       #include <sys/tspriocntl.h>
       #include <sys/iapriocntl.h>
       #include <sys/fsspriocntl.h>
       #include <sys/fxpriocntl.h>

       long priocntlset(procset_t *psp, int cmd, /* arg */ ...);

DESCRIPTION
       The priocntlset() function changes the scheduling properties of running
       processes. priocntlset() has the same functions as the priocntl() func-
       tion,  but  a more general way of specifying the set of processes whose
       scheduling properties are to be changed.

NOTES
    Due to the lack of a priocntl() system call on Linux and FreeBSD...

То, как обрабатываются процессы между Solaris и Linux, отличается. Обе системы являются вариантами Unix, но конкретные системные вызовы, которые вы ищете, не имеют эквивалента Linux. В основном priocntlset используется для (пере) планирования процессов. Я не в курсе последних версий ядра Linux или того, какие планировщики доступны, но в любой хорошей книге по ядру 2.6 (или 2.4) будет раздел о планировании с примерами.

Хорошее место, чтобы начать на машине Linux man syscalls,

Другие вопросы по тегам