Skip to content

Instantly share code, notes, and snippets.

@epickrram
epickrram / ExcerptRandomAccessFileWriteBytes.c
Created June 4, 2015 12:40
RandomAccessFile.writeBytes()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/native/java/io/RandomAccessFile.c#l83
*/
Java_java_io_RandomAccessFile_writeBytes(JNIEnv *env,
jobject this, jbyteArray bytes, jint off, jint len) {
writeBytes(env, this, bytes, off, len, JNI_FALSE, raf_fd);
}
@epickrram
epickrram / Excerpt_io_util.c
Created June 4, 2015 12:41
IO_Util.writeBytes
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/native/java/io/io_util.c#l145
*/
void
writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
jint off, jint len, jboolean append, jfieldID fid)
{
jint n;
char stackBuf[BUF_SIZE];
char *buf = NULL;
@epickrram
epickrram / IO_Util_mdWrite.c
Created June 4, 2015 12:45
IO_Util.handleWrite()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/native/java/io/io_util_md.h#l71
*/
#define IO_Write handleWrite
#define IO_Append handleWrite
// ...
/*
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/native/java/io/io_util_md.c#l160
@epickrram
epickrram / ExcerptFileDispatcherImpl.c
Created June 4, 2015 12:46
FileDispatcherImpl.pwrite0()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c#l111
*/
Java_sun_nio_ch_FileDispatcherImpl_pwrite0(JNIEnv *env, jclass clazz, jobject fdo,
jlong address, jint len, jlong offset)
{
jint fd = fdval(env, fdo);
void *buf = (void *)jlong_to_ptr(address);
return convertReturnVal(env, pwrite64(fd, buf, len, offset), JNI_FALSE);
@epickrram
epickrram / ExcerptFileChannel.java
Created June 4, 2015 13:00
FileChannel.write()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/nio/channels/FileChannel.java#l778
*/
public abstract int write(ByteBuffer src, long position) throws IOException;
// ...
/*
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/nio/ch/FileChannelImpl.java#l703
*/
@epickrram
epickrram / ExcerptIOUtil.java
Last active August 29, 2015 14:22
IOUtil.write()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/nio/ch/IOUtil.java#l46
*/
static int write(FileDescriptor fd, ByteBuffer src, long position,
NativeDispatcher nd)
throws IOException
{
if (src instanceof DirectBuffer)
return writeFromNativeBuffer(fd, src, position, nd);
@epickrram
epickrram / ExcerptFileDispatcherImpl.c
Created June 4, 2015 13:06
FileDispatcherImpl.pwrite()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c#l111
*/
Java_sun_nio_ch_FileDispatcherImpl_pwrite0(JNIEnv *env, jclass clazz, jobject fdo,
jlong address, jint len, jlong offset)
{
jint fd = fdval(env, fdo);
void *buf = (void *)jlong_to_ptr(address);
return convertReturnVal(env, pwrite64(fd, buf, len, offset), JNI_FALSE);
@epickrram
epickrram / ExcerptFileDispatcherImpl.java
Created June 4, 2015 13:13
FileDispatcherImpl.pwrite()
/*
From http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/classes/sun/nio/ch/FileDispatcherImpl.java#l63
*/
int pwrite(FileDescriptor fd, long address, int len, long position)
throws IOException
{
return pwrite0(fd, address, len, position);
}
@epickrram
epickrram / read_write.c
Created December 9, 2015 11:28
new_sync_read
ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
{
struct iovec iov = { .iov_base = buf, .iov_len = len };
struct kiocb kiocb;
struct iov_iter iter;
ssize_t ret;
init_sync_kiocb(&kiocb, filp);
kiocb.ki_pos = *ppos;
kiocb.ki_nbytes = len;
@epickrram
epickrram / xfs_file.c
Created December 9, 2015 11:49
xfs_read
xfs_file_read_iter(
struct kiocb *iocb,
struct iov_iter *to)
{
...
xfs_rw_ilock(ip, XFS_IOLOCK_SHARED);
...
ret = generic_file_read_iter(iocb, to);
...
xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED);