Портирование приложения с кодом 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
,