ludes the pages of the code, data and stack segment,
// as well as shared libraries, user space kernel data, shared memory, and
// memory-mapped files. All mapped pages are guaranteed to be resident in
// RAM when the call returns successfully; the pages are guaranteed to
// stay in RAM until later unlocked.
if ((mlockall (MCL_CURRENT | MCL_FUTURE)) == -1)
{ = errno;
fprintf (stderr, "mlockall () error!: n% s errno =% i n", strerror (ierr), ierr);
}
// створити об'єкти інтерфейсів c УШ
for (n = 0; n <1; n + +)
{
// 32 - тип ІКМ тракту підведеного до модуля УШ (на 32 канальних інтервалу, м.б. на 64)
pUHInterface [n] = new t_UHInterface (n, 32); (! pUHInterface [n])
{("t_RTPManager :: Instance: Allocation memory error! n");
exit (1);
}
}
// створити потоки інтерфейсів c УШ
for (n = 0; n <1; n + +)
{
try
{[n] -> set_running (true); = n; [n] = new t_thread (main_UHInterface,
(void *) & i, SCHED_FIFO, 49);
// SCHED_FIFO - тип планувальника, обслуговування по черзі, серед мають один пріоритет
// 49-пріоритет, пріоритети мають бути <50, тому що таймер має пріоритет 50
}
catch (int err)
{("!! UH Interface thread creating error, code = n");
exit (1);
}
// зробити потік від'єднується. (він буде завершуватися сам) [n] -> detach ();
// затримати перед створенням наступного потоку, щоб попередній встиг запуститися
sleeptimer.tv_sec = 0;
sleeptimer.tv_nsec = 500000000;// 500ms (& sleeptimer, NULL);
}
pUHInterface [0] -> StartDataAccumulation (0); bc [5] = {0};
while (1)
{(bc, sizeof (bc), stdin); (bc [0] == '*') break;
} [0] -> StopDataAccumulation (0); (n = 0; n <1; n + +)
{[n] -> stop (); (pUHInterfaceThread [n]); (pUHInterface [n]);
} ();
return EXIT_SUCCESS;
}
Реалізація класу для взаємодії модуля протоколів RTP і модуля УШ
# include
# include
# include
# include "api_6713b.h"
# include "UH_interface.h"
# include "servis.h"
# ifdef ___ PC
# include "pcdata.h"
# endifconst char cName [16] = "/ dev/drv6713b. "; * PcCodec [] = {" null "," G.711 "," G.726-16 "," G729 "}; SLineCtrl t_UHInterface :: m_vzeroLineCtrl [32] = {{{0} , 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0 , 0,0}, {{0}, 0,0,0},
{{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0 , 0,0}, {{0}, 0,0,0}, {{0}, 0,0,0},
{{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0 , 0,0}, {{0}, 0,0,0}, {{0}, 0,0,0},
{{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0 , 0,0}, {{0}, 0,0,0}, {{0}, 0,0,0},
{{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0,0,0}, {{0}, 0 , 0,0}, {{0}, 0,0,0}, {{0}, 0,0,0},
{{0}, 0,0,0}, {{0}, 0,0,0},};
/** ПРИЗНАЧЕННЯ: конструктор
* ВХІДНІ ПАРАМЕТРИ: ucUHNum - порядковий номер УШ (0-3),
* ucCINum - кількість КД в ІКМ
* ВИХІДНІ ПАРАМЕТРИ: немає
*/_UHInterface :: t_UHInterface (unsigned char ucUHNum, unsigned char ucCINum)
{
// unsigned char i;
int i;
# ifdef ___ PC
m_ucI = 0;
# endif (m_cName, cName, sizeof (m_cName));
itoa (ucUHNum, (char *) (& m_cName [14])); _is_running = false;
m_bstop_running = false; _ucUHNum = ucUHNum;
m_ucCINum = ucCINum; _ucIndDI = DI + m_ucUHNum;
m_ucIndDO = DO + m_ucUHNum; _p...