old-www/HOWTO/SCSI-Generic-HOWTO/gs_rs_size.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
>