/*
 * $QNXLicenseC:
 * Copyright 2007, QNX Software Systems. All Rights Reserved.
 * 
 * You must obtain a written license from and pay applicable license fees to QNX 
 * Software Systems before you may reproduce, modify or distribute this software, 
 * or any work that includes all or part of this software.   Free development 
 * licenses are available for evaluation and non-commercial purposes.  For more 
 * information visit http://licensing.qnx.com or email licensing@qnx.com.
 *  
 * This file may contain contributions from others.  Please review this entire 
 * file for other proprietary rights or license notices, as well as the QNX 
 * Development Suite License Guide at http://licensing.qnx.com/license-guide/ 
 * for other information.
 * $
 */




#undef _LARGEFILE64_SOURCE
#define _LARGEFILE64_SOURCE 1
#undef _FILE_OFFSET_BITS
#define _FILE_OFFSET_BITS	32
#include <stddef.h>
#include <unistd.h>
#include <inttypes.h>
#include <errno.h>
#include <sys/iomsg.h>

ssize_t	pread64(int fd, void *buff, size_t nbytes, off64_t offset) {
	struct read_offset {
		struct _io_read			read;
		struct _xtype_offset	offset;
	}						msg;

	msg.read.type = _IO_READ;
	msg.read.combine_len = offsetof(struct read_offset, offset) + sizeof msg.offset;
	msg.read.nbytes = nbytes;
	msg.read.xtype = _IO_XTYPE_OFFSET;
	msg.read.zero = 0;
	msg.offset.offset = offset;

	return MsgSend(fd, &msg, offsetof(struct read_offset, offset) + sizeof msg.offset, buff, nbytes);
}

ssize_t	pread(int fd, void *buff, size_t nbytes, off_t offset) {
	return pread64(fd, buff, nbytes, offset);
}

__SRCVERSION("pread.c $Rev: 153052 $");
