Provided by: freebsd-manpages_9.2+1-1_all bug

NAME

     bus_adjust_resource — adjust resource allocated from a parent bus

SYNOPSIS

     #include <sys/param.h>
     #include <sys/bus.h>

     #include <machine/bus.h>
     #include <sys/rman.h>
     #include <machine/resource.h>

     int
     bus_adjust_resource(device_t dev, int type, struct resource *r, u_long start, u_long end);

DESCRIPTION

     This function is used to ask the parent bus to adjust the resource range assigned to an
     allocated resource.  The resource r should have been allocated by a previous call to
     bus_alloc_resource(9).  The new resource range must overlap the existing range of r.  The
     type argument should match the type argument passed to bus_alloc_resource(9) when the
     resource was initially allocated.

     Note that none of the constraints of the original allocation request such as alignment or
     boundary restrictions are checked by bus_adjust_resource().  It is the caller's
     responsibility to enforce any such requirements.

RETURN VALUES

     The bus_adjust_resource() method returns zero on success or an error code on failure.

EXAMPLES

     Grow an existing memory resource by 4096 bytes.

             struct resource *res;
             int error;

             error = bus_adjust_resource(dev, SYS_RES_MEMORY, res,
                 rman_get_start(res), rman_get_end(res) + 0x1000);

ERRORS

     bus_adjust_resource() will fail if:

     [EINVAL]           The dev device does not have a parent device.

     [EINVAL]           The r resource is a shared resource.

     [EINVAL]           The new address range does not overlap with the existing address range of
                        r.

     [EBUSY]            The new address range conflicts with another allocated resource.

SEE ALSO

     bus_alloc_resource(9), bus_release_resource(9), device(9), driver(9)