DragonFly BSD

CVS log for src/sys/sys/xio.h

[BACK] Up to [DragonFly] / src / sys / sys

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.10: download - view: text, markup, annotated - select for diffs
Mon Aug 13 17:20:05 2007 UTC (7 years, 1 month ago) by dillon
Branches: MAIN
CVS tags: HEAD, DragonFly_RELEASE_2_0_Slip, DragonFly_RELEASE_2_0, DragonFly_RELEASE_1_12_Slip, DragonFly_RELEASE_1_12, DragonFly_Preview
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +1 -0 lines
Add xio_init_pages(), which builds an XIO based on an array of vm_page_t's.

Revision 1.9: download - view: text, markup, annotated - select for diffs
Fri Jun 29 05:09:14 2007 UTC (7 years, 3 months ago) by dillon
Branches: MAIN
CVS tags: DragonFly_RELEASE_1_10_Slip, DragonFly_RELEASE_1_10
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +1 -0 lines
Add a new flag, XIOF_VMLINEAR, which requires that the buffer being mapped
be contiguous within a single VM object.

Revision 1.8: download - view: text, markup, annotated - select for diffs
Fri Jun 29 00:18:03 2007 UTC (7 years, 3 months ago) by dillon
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +2 -0 lines
Get out-of-band DMA buffers working for user<->user syslinks.  This
allows the syslink protocol to operate in a manner very similar to the
way sophisticated DMA hardware works, where you have a DMA buffer attached
to a command.

Augment the syslink protocol to implement read, write, and read-modify-write
style commands.

Obtain the MP lock in places where needed because fileops are called without
it held now.  Our VM ops are not MP safe yet.

Use an XIO to map VM pages between userland processes.  Add additional
XIO functions to aid in copying data to and from a userland context.  This
removes an extra buffer copy from the path and allows us to manipulate pure
vm_page_t's for just about everything.

Revision 1.7: download - view: text, markup, annotated - select for diffs
Sat May 20 02:42:13 2006 UTC (8 years, 4 months ago) by dillon
Branches: MAIN
CVS tags: DragonFly_RELEASE_1_8_Slip, DragonFly_RELEASE_1_8, DragonFly_RELEASE_1_6_Slip, DragonFly_RELEASE_1_6
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +9 -0 lines
I'm growing tired of having to add #include lines for header files that
the include file(s) I really want depend on.

Go through nearly all major system include files and add appropriately
#ifndef'd #include lines to include all dependant header files.  Kernel
source files now only need to #include the header files they directly
depend on.

So, for example, if I wanted to add a SYSCTL to a kernel source file,
I would only have to #include <sys/sysctl.h> to bring in the support for
it, rather then four or five header files in addition to <sys/sysctl.h>.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Tue Mar 1 23:35:16 2005 UTC (9 years, 7 months ago) by dillon
Branches: MAIN
CVS tags: DragonFly_Stable, DragonFly_RELEASE_1_4_Slip, DragonFly_RELEASE_1_4, DragonFly_RELEASE_1_2_Slip, DragonFly_RELEASE_1_2
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +39 -10 lines
Clean up the XIO API and structure.  XIO no longer tries to 'track' partial
copies into or out of an XIO.  It no longer adjusts xio_offset or xio_bytes
once they have been initialized.  Instead, a relative offset is now passed
to API calls to handle partial copies.  This makes the API a lot less confusing
and makes the XIO structure a lot more flexible, shareable, and more suitable
for use by higher level entities (buffer cache, pipe code, upcoming MSFBUF
work, etc).

Revision 1.5: download - view: text, markup, annotated - select for diffs
Fri Jul 16 05:51:57 2004 UTC (10 years, 2 months ago) by dillon
Branches: MAIN
CVS tags: DragonFly_Snap29Sep2004, DragonFly_Snap13Sep2004
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +25 -17 lines
Update all my personal copyrights to the Dragonfly Standard Copyright.

Revision 1.4: download - view: text, markup, annotated - select for diffs
Sun Jun 6 19:16:51 2004 UTC (10 years, 3 months ago) by dillon
Branches: MAIN
CVS tags: DragonFly_1_0_REL, DragonFly_1_0_RC1, DragonFly_1_0A_REL
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +1 -0 lines
Add the prototype for the recently added XIO API call xio_init().

Revision 1.3: download - view: text, markup, annotated - select for diffs
Thu May 13 17:40:17 2004 UTC (10 years, 4 months ago) by dillon
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +1 -0 lines
Close an interrupt race between vm_page_lookup() and (typically) a
vm_page_sleep_busy() check by using the correct spl protection.
An interrupt can occur inbetween the two operations and unbusy/free
the page in question, causing the busy check to fail and for the code
to fall through and then operate on a page that may have been freed
and possibly even reused.   Also note that vm_page_grab() had the same
issue between the lookup, busy check, and vm_page_busy() call.

Close an interrupt race when scanning a VM object's memq.  Interrupts
can free pages, removing them from memq, which interferes with memq scans
and can cause a page unassociated with the object to be processed as if it
were associated with the object.

Calls to vm_page_hold() and vm_page_unhold() require spl protection.

Rename the passed socket descriptor argument in sendfile() to make the
code more readable.

Fix several serious bugs in procfs_rwmem().  In particular, force it to
block if a page is busy and then retry.

Get rid of vm_pager_map_pag() and vm_pager_unmap_page(), make the functions
that used to use these routines use SFBUF's instead.

Get rid of the (userland?) 4MB page mapping feature in pmap_object_init_pt()
for now.  The code appears to not track the page directory properly and
could result in a non-zero page being freed as PG_ZERO.

This commit also includes updated code comments and some additional
non-operational code cleanups.

Revision 1.2: download - view: text, markup, annotated - select for diffs
Fri Apr 9 12:51:20 2004 UTC (10 years, 5 months ago) by joerg
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +1 -1 lines
This is _SYS_XIO_H, not _SYS_UIO_H.

Noticed by: ibotty

Revision 1.1: download - view: text, markup, annotated - select for diffs
Wed Mar 31 19:24:13 2004 UTC (10 years, 6 months ago) by dillon
Branches: MAIN
Initial XIO implementation.  XIOs represent data through a list of VM pages
rather then mapped KVM, allowing them to be passed between threads without
having to worry about KVM mapping overheads, TLB invalidation, and so forth.

This initial implementation supports creating XIOs from user or kernel data
and copying from an XIO to a user or kernel buffer or a uio.  XIO are intended
to be used with CAPS, PIPES, VFS, DEV, and other I/O paths.

The XIO concept is an outgrowth of Alan Cox'es unique use of target-side
SF_BUF mapping to improve pipe performance.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options