169 lines
3.1 KiB
HTML
169 lines
3.1 KiB
HTML
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>SG_SET_RESERVED_SIZE (and _GET_ )</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
|
"><LINK
|
|
REL="HOME"
|
|
TITLE="The Linux SCSI Generic (sg) HOWTO"
|
|
HREF="index.html"><LINK
|
|
REL="UP"
|
|
TITLE="Ioctl()s"
|
|
HREF="ioctl.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="SG_GET_REQUEST_TABLE"
|
|
HREF="g_rq_tab.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="SG_SCSI_RESET"
|
|
HREF="scsi_reset.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>The Linux SCSI Generic (sg) HOWTO</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="g_rq_tab.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
>Chapter 8. Ioctl()s</TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="scsi_reset.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="GS_RS_SIZE">8.14. SG_SET_RESERVED_SIZE (and _GET_ )</H1
|
|
><DIV
|
|
CLASS="FORMALPARA"
|
|
><P
|
|
><B
|
|
>SG_SET_RESERVED_SIZE 0x2275 [_GET_ 0x2272]. </B
|
|
>Both ioctl()s assume the 3rd argument is pointing to an int.</P
|
|
></DIV
|
|
><P
|
|
>For ioctl(SG_SET_RESERVED_SIZE) the value will be used to
|
|
request a new reserved buffer of that size. The previous reserved buffer
|
|
is freed (if it is not in use; if it was in use then the ioctl() fails and
|
|
EBUSY is placed in errno).
|
|
A new reserved buffer is then allocated and its actual size can be found by
|
|
calling the ioctl(SG_GET_RESERVED_SIZE). The reserved buffer is then used
|
|
for DMA purposes by subsequent write() and ioctl(SG_IO) commands if it is
|
|
not already in use and if the write() is not calling for a buffer size
|
|
larger than that reserved. The reserved buffer may well be a series of
|
|
kernel buffers if the adapter supports scatter-gather. Large buffers can
|
|
be requested (e.g. 4 MB) but not necessarily granted. Once a mmap() call
|
|
has been made on a sg file descriptor, subsequent calls to this ioctl()
|
|
will fail with EBUSY placed in errno.</P
|
|
><P
|
|
>In the case of ioctl(SG_GET_RESERVED_SIZE) the size in bytes of
|
|
the reserved buffer from open() or the most recent SG_SET_RESERVED_SIZE
|
|
ioctl() call on this fd. The result can be 0 if memory is very tight. In
|
|
this case it may not be wise to attempt something like burning a CD on
|
|
this file descriptor.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="g_rq_tab.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="scsi_reset.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>SG_GET_REQUEST_TABLE</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="ioctl.html"
|
|
ACCESSKEY="U"
|
|
>Up</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>SG_SCSI_RESET</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |