Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

А была вот такая конструкция (+)

Отправлено ubobrov 08 февраля 2009 г. 19:51
В ответ на: рассказали бы отправлено пользователем Torkitas 08 февраля 2009 г. 19:34


#elif defined( __ICCARM__)
__INTRINSIC long __lseek(int file, long ptr, int dir) {
struct fd_seek seek;

seek.off = ptr;
seek.dir = dir;

if( ioctl( file, FDSEEK, &seek ) < 0 )
return (_off_t)-1;
else
return seek.off;
}
#endif

int ioctl( int file, unsigned long request, void *ptr )
{
#if defined(__GNUC__)
return _ioctl_r( _REENT, file, request, ptr );
#elif defined( __ICCARM__)
return __ioctl( file, request, ptr );
#endif
}

#elif defined( __ICCARM__)
static int __ioctl( int file, unsigned long request, void *ptr )
{
const DM_DEVICE* pdev;

// Find device, check ioctl function
pdev = dm_get_device_at( DM_GET_DEVID( file ) );
if( pdev->p_ioctl_r == NULL )
{
return -1;
}

// And call the ioctl function
return pdev->p_ioctl_r( DM_GET_FD( file ), request, ptr );
}
#endif


И функция __ioctl как раз возвращала -1 (а надо >=0), т.к. не была определена функция pdev->p_ioctl_r.
Это к тому, что если записали в файл, то надо rewind(pFile) сделать, чтобы его указатель на начало переместить (для уарта, он не буферезирован), а rewind в свою очередь вызовет fseek, а тот вызовет __lseek. Вот так.


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 56:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru