tail head cat sleep
QR code linking to this page

Man page  — BUS_ALLOC_RESOURCE

명칭

bus_alloc_resource – 버스상의 자원의 할당

내용

서식

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

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

struct resource *
bus_alloc_resource(device_t dev, int type, int *rid, u_long start, u_long end, u_long count, u_int flags);

해설

이것은 자원 관리 함수군에의 간단한 인터페이스입니다. 부모의 메소드 테이블을 통과하는 간접적인 방법을 은폐 합니다. 이 함수는, 일반적으로 아탓치시에 불려 가야 합니다가, (경합 상태의 경우를 제외해) 결코 그 전에 호출해 되지 않습니다.

인수는 이하와 같습니다.
dev (은)는, 자원의 소유를 요구하는 디바이스입니다. 할당전은, 자원은 부모의 버스에 의해 소유되고 있습니다.
type (은)는, 할당하고 싶은 자원의 형태입니다. 이하 중의 1 개(살)입니다.
SYS_RES_IRQ IRQ 용.
SYS_RES_DRQ ISA DMA 라인용.
SYS_RES_IOPORT
  입출력 포트용.
SYS_RES_MEMORY
  입출력 메모리용.
rid (은)는, 할당하고 있는 자원을 식별하는, 버스 고유의 핸들을 가리킵니다. ISA 에서는, PnP 의 짜 또는 hints 의 구조를 통해, 디바이스를 위해서(때문에) 셋업 되고 있는 자원의 배열에의 인덱스입니다. PCCARD 에서는, 이 문장을 쓰고 있는 현시점에서는 같습니다만, 장래의 newcard 에서는 바뀔지도 모릅니다. PCI 에서는, pci 콘피그 공간에 있어, 자원을 기술하는 워드에의 오프셋(offset)가 되어 있습니다. 버스의 메소드는, 인수로서 주어지고 있는 RID 를 무제한하게 변경합니다. 이전에게 주었을 때의 값에 의존해 되지 않습니다.
startend (은)는 자원의 개시/종료 주소입니다. start 에 0 의 값을 end 에 ~0 의 값을 지정했을 경우에는, 버스를 위한 기본값이 계산됩니다.
count (은)는 자원의 크기로, 예를 들면, 입출력 포트의 크기입니다 (이것은 대체로, PCI 상에서는 1 그리고, ISA 및 PCCARD 상에서는 디바이스 의존입니다). startend 에 기본값을 지정했을 경우, count 하지만 기본값보다 작다면 디폴트치가 사용되어 count 하지만 기본값 이상이라면 count 가 사용됩니다.
flags (은)는 자원을 위한 플래그를 설정합니다. 이하의 플래그를 1 개 이상 설정할 수 있습니다.
RF_ALLOCATED
  자원은 이미 예약되고 있습니다. 자원은 계속해 rman_activate_resource(9) [영어] 그리고 활성화 될 필요가 있습니다.
RF_ACTIVE 불가분에, 자원을 활성화 합니다.
RF_SHAREABLE
  자원은 동시 공유를 허가합니다. 그 자원이 공유 불가인 것을 모르는 경우, 항상 설정되어야 합니다. 버스가 공유를 서포트하고 있지 않는 경우, 이 플래그를 없애는 것은 버스의 코드의 일입니다. 이 예로서 pccard/cardbus 에서는 디바이스를 공유할 수 있을까 할 수 없는가는, 버스에 의존합니다.
RF_TIMESHARE
  자원은 시분할 공유를 허가합니다.

반환값

성공시에는 struct resource 구조체에의 포인터가 돌려주어져 그렇지 않은 경우에는 누르포인타가 돌려주어집니다.

사용예

이것은 있는 샘플의 코드입니다. portid irqid 의 값은 이러한 호출의 후에, 디바이스의 softc 안에 보존될 것입니다.
        struct resource *portres, irqres;
        int portid, irqid;

        portid = 0;         irqid = 0;         portres = bus_alloc_resource(dev, SYS_RES_IOPORT, &portid,                         0ul, ~0ul, 32, RF_ACTIVE);         irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &irqid,                         0ul, ~0ul, 1, RF_ACTIVE | RF_SHAREABLE);

관련 항목

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

저자

이 메뉴얼 페이지는 Alexander Langer <alex@big.endian.de> 하지만 써, 부분적으로 Warner Losh <imp@FreeBSD.ORG> 하지만 썼습니다.

BUS_ALLOC_RESOURCE (9) May 18, 2000

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.