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

Пожалуйста, помогите, я использую инструменты 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 Ответ

1 голос
/ 02 июня 2011

Это на самом деле не вопрос, связанный с 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.

...