The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 7.4 Эффективная блокировка — 1

Распечатка 7.4 Эффективная блокировка — 1

Предыдущая  Содержание  Следующая V*D*V

Распечатка 7.4.

 

/* hello_world.c */

 

#include <stdio.h>

/* Функция, не работающая в реальном времени */

void hello_world(void) {

  printf("hello world");

  return;

}

 

/* hello_rt_world.c */

 

#include <stdio.h>

/* Это функция реального времени */

void hello_rt_world(void){

  extern char rt_data[],rt_bss[];

  /* работаем с rt_data */

  printf("%s", rt_data);

  /* работаем с rt_bss */

  memset(rt_bss, 0xff, sizeof(rt_bss));

  return ;

}

 

 

/* hello_rt_data.c */

 

/* Данные реального времени */

char rt_data[] = "Hello Real-time World";

 

 

/* hello_rt_bss.c */

 

/* bss реального времени */

char rt_bss[100];

 

 

/* hello_main.c */

 

#include <stdio.h>

extern void hello_world(void);

extern void hello_rt_world(void);

 

/*

 * Мы определяем эти символы в скрипте компоновщика.

 * Это станет понятно дальше.

 */

extern unsigned long __start_rt_text, __end_rt_text;

extern unsigned long __start_rt_data, __end_rt_data;

extern unsigned long __start_rt_bss, __end_rt_bss;

 

/*

 * Эта функция блокирует в памяти все функции и данные

 * реального времени.

 */

void rt_lockall(void){

  /* блокировка сегмента текста реального времени */

  mlock(&__start_rt_text, &__end_rt_text - &__start_rt_text);

  /* блокировка данных реального времени */

  mlock(&__start_rt_data, &__end_rt_data - &__start_rt_data);

  /* блокировка bss реального времени */

  mlock(&__start_rt_bss, &__end_rt_bss - &__start_rt_bss);

}

 

int main(){

  /* Первым шагом является выполнение блокировки памяти */

  rt_lockall();

  hello_world();

  /* Это наша функция реального времени */

  hello_rt_world();

  return 0;

}

 

Предыдущая  Содержание  Следующая