The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпущен Oracle Solaris 11 Express"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Доступны два режима работы форума: "Раскрыть нити" и "Свернуть нити".
. "Выпущен Oracle Solaris 11 Express" +/
Сообщение от ананим (?), 17-Ноя-10, 17:43 
вот эта мне функция тоже понравилась
/*
    431  * Move bytes between a buffer and a uio structure.
    432  * The transfer direction is controlled by rw:
    433  *    UIO_READ:  transfer from buf to uio
    434  *    UIO_WRITE: transfer from uio to buf
    435  *
    436  * Returns the number of bytes moved.
    437  */
    438 ssize_t
    439 ndr_uiomove(caddr_t buf, size_t buflen, enum uio_rw rw, struct uio *uio)
    440 {
    441     struct iovec *iov;
    442     int reading = (rw == UIO_READ);
    443     size_t nbytes;
    444     size_t nxfer = 0;
    445
    446     assert(rw == UIO_READ || rw == UIO_WRITE);
    447
    448     while (buflen && uio->uio_resid && uio->uio_iovcnt) {
    449         iov = uio->uio_iov;
    450         if ((nbytes = iov->iov_len) == 0) {
    451             uio->uio_iov++;
    452             uio->uio_iovcnt--;
    453             continue;
    454         }
    455
    456         if (nbytes > buflen)
    457             nbytes = buflen;
    458
    459         if (reading)
    460             bcopy(buf, iov->iov_base, nbytes);
    461         else
    462             bcopy(iov->iov_base, buf, nbytes);
    463
    464         iov->iov_base += nbytes;
    465         iov->iov_len -= nbytes;
    466         uio->uio_resid -= nbytes;
    467         uio->uio_offset += nbytes;
    468         buf += nbytes;
    469         buflen -= nbytes;
    470         nxfer += nbytes;
    471     }
    472
    473     return (nxfer);
    474 }
Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпущен Oracle Solaris 11 Express, opennews, 15-Ноя-10, 23:15  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру