[an error occurred while processing this directive]
|
Нереентерабельность - в BIOS у Вас несколько задач выполняется одновременно. Реально возможна ситуация, когда одна из задач, находясь в коде стандартной библиотеки оказывается вытесненной другой задачей, в свою очередь вызывающей ту же функцию. Так как функции стандартной библиотеки работают с общими ресурсами (например локальные статические переменные, буфера ввода вывода и тп), то это приведет к сбою при выполнении программы так как эти общие ресурсы достаются второй задаче в бог весть каком состоянии - первая задача не закончила работу с ними и была прервана.
Семафор позволит осуществлять доступ к функциям библиотеки последовательно - пока одна задача работает с ресурсом остальные заблокированы и ждут пока ресурс не освободится.
Момент на счет malloc - при линковке с биосом должен подлинковывается не malloc из стандартной библиотеки,а malloc из биос.
Убедитесь в этом (важен порядок линковки - библиотеки биос должны быть первыми в списке)
E-mail: info@telesys.ru