[gPXE-devel] [PATCH 26/33] [linux] UIO-DMA: Adjust for our use
Piotr Jaroszyński
p.jaroszynski at gmail.com
Sun Aug 15 18:59:31 EDT 2010
Use our includes, foo -> linux_foo where appropriate and fix one or two
warnings.
Signed-off-by: Piotr Jaroszyński <p.jaroszynski at gmail.com>
---
src/include/gpxe/linux/uio-dma.h | 3 --
src/interface/linux/uio-dma.c | 56 ++++++++++++++-----------------------
2 files changed, 21 insertions(+), 38 deletions(-)
diff --git a/src/include/gpxe/linux/uio-dma.h b/src/include/gpxe/linux/uio-dma.h
index 366a859..16bd0dc 100644
--- a/src/include/gpxe/linux/uio-dma.h
+++ b/src/include/gpxe/linux/uio-dma.h
@@ -39,9 +39,6 @@
#define UIO_DMA_H
#include <stdint.h>
-#include <sys/types.h>
-#include <sys/user.h>
-#include <sys/uio.h>
#ifdef __cplusplus
extern "C" {
diff --git a/src/interface/linux/uio-dma.c b/src/interface/linux/uio-dma.c
index 18a7a09..b92e526 100644
--- a/src/interface/linux/uio-dma.c
+++ b/src/interface/linux/uio-dma.c
@@ -30,25 +30,11 @@
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define _GNU_SOURCE
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <syslog.h>
-#include <signal.h>
-#include <errno.h>
-
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/mman.h>
-#include <sys/user.h>
-
-#include "uio-dma-ioctl.h"
-#include "uio-dma.h"
+#include <asm/errno.h>
+#include <linux_api.h>
+#include <gpxe/linux/uio-dma-ioctl.h>
+#include <gpxe/linux/uio-dma.h>
+#include <gpxe/malloc.h>
static inline int is_po2(unsigned long n)
{
@@ -69,12 +55,12 @@ static inline unsigned long roundup_po2(unsigned long n)
int uio_dma_open()
{
- return open("/dev/uio-dma", O_RDWR);
+ return linux_open("/dev/uio-dma", O_RDWR);
}
void uio_dma_close(int fd)
{
- close(fd);
+ linux_close(fd);
}
struct uio_dma_area *uio_dma_alloc(int fd, unsigned int size,
@@ -103,7 +89,7 @@ struct uio_dma_area *uio_dma_alloc(int fd, unsigned int size,
for (chunk_size = roundup_po2(size); chunk_size; chunk_size >>= 1) {
areq.chunk_size = chunk_size;
areq.chunk_count = (size + chunk_size - 1) / chunk_size;
- err = ioctl(fd, UIO_DMA_ALLOC, (unsigned long) &areq);
+ err = linux_ioctl(fd, UIO_DMA_ALLOC, (unsigned long) &areq);
if (!err)
break;
}
@@ -113,7 +99,7 @@ struct uio_dma_area *uio_dma_alloc(int fd, unsigned int size,
}
if (!is_po2(areq.chunk_size)) {
- errno = -EILSEQ;
+ linux_errno = -EILSEQ;
goto failed;
}
@@ -121,7 +107,7 @@ struct uio_dma_area *uio_dma_alloc(int fd, unsigned int size,
da->chunk_count = areq.chunk_count;
da->chunk_size = areq.chunk_size;
da->mmap_offset = areq.mmap_offset;
- da->addr = mmap(NULL, da->size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, da->mmap_offset);
+ da->addr = linux_mmap(NULL, da->size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, da->mmap_offset);
if (da->addr == MAP_FAILED)
goto failed;
@@ -129,23 +115,22 @@ struct uio_dma_area *uio_dma_alloc(int fd, unsigned int size,
failed:
/* We need to free the area we just requested from the kernel. */
- err = errno;
+ err = linux_errno;
freq.mmap_offset = da->mmap_offset;
- ioctl(fd, UIO_DMA_FREE, (unsigned long) &freq);
+ linux_ioctl(fd, UIO_DMA_FREE, (unsigned long) &freq);
free(da);
- errno = err;
+ linux_errno = err;
return NULL;
}
int uio_dma_free(int fd, struct uio_dma_area *da)
{
struct uio_dma_free_req freq;
- int err;
- munmap(da->addr, da->size);
+ linux_munmap(da->addr, da->size);
freq.mmap_offset = da->mmap_offset;
- if (ioctl(fd, UIO_DMA_FREE, (unsigned long) &freq) < 0)
+ if (linux_ioctl(fd, UIO_DMA_FREE, (unsigned long) &freq) < 0)
return -1;
free(da);
return 0;
@@ -160,7 +145,8 @@ struct uio_dma_mapping *uio_dma_map(int fd, struct uio_dma_area *area,
uint64_t dmaddr[area->chunk_count];
} mreq;
- int err, i;
+ int err;
+ unsigned i;
m = malloc(sizeof(*m) + sizeof(uint64_t) * area->chunk_count);
if (!m)
@@ -174,7 +160,7 @@ struct uio_dma_mapping *uio_dma_map(int fd, struct uio_dma_area *area,
for (i=0; i < area->chunk_count; i++)
mreq.dmaddr[i] = 0;
- err = ioctl(fd, UIO_DMA_MAP, (unsigned long) &mreq);
+ err = linux_ioctl(fd, UIO_DMA_MAP, (unsigned long) &mreq);
if (err)
goto failed;
@@ -191,9 +177,9 @@ struct uio_dma_mapping *uio_dma_map(int fd, struct uio_dma_area *area,
return m;
failed:
- err = errno;
+ err = linux_errno;
free(m);
- errno = err;
+ linux_errno = err;
return NULL;
}
@@ -205,7 +191,7 @@ int uio_dma_unmap(int fd, struct uio_dma_mapping *m)
ureq.devid = m->devid;
ureq.direction = m->direction;
ureq.flags = 0;
- if (ioctl(fd, UIO_DMA_UNMAP, (unsigned long) &ureq) < 0)
+ if (linux_ioctl(fd, UIO_DMA_UNMAP, (unsigned long) &ureq) < 0)
return -1;
free(m);
return 0;
--
1.7.1
More information about the gPXE-devel
mailing list