요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
#!/bin/sh
# Simple hotplug script sample:
#
# Both $DEVPATH and $FIRMWARE are already provided in the environment.
HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
if [ "$SUBSYSTEM" == "firmware" -a "$ACTION" == "add" ]; then
if [ -f $HOTPLUG_FW_DIR/$FIRMWARE ]; then
echo 1 > /sys/$DEVPATH/loading
cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data
echo 0 > /sys/$DEVPATH/loading
else
echo -1 > /sys/$DEVPATH/loading
fi
fi
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Firmware hotplug 요청 처리 script
1-17이 파일은 firmware class hotplug 요청을 처리하는 단순한 `/bin/sh` 예제다. Kernel 또는 hotplug manager가 환경 변수 `DEVPATH`와 `FIRMWARE`를 이미 제공한다는 전제에서 `/usr/lib/hotplug/firmware/` 아래의 firmware image를 sysfs loading interface로 전달한다.
Script는 `SUBSYSTEM`이 `firmware`이고 `ACTION`이 `add`일 때만 동작한다. 요청한 `$HOTPLUG_FW_DIR/$FIRMWARE` file이 존재하면 `/sys/$DEVPATH/loading`에 `1`을 써 loading 시작을 알리고, image bytes를 `/sys/$DEVPATH/data`에 기록한 뒤 loading에 `0`을 써 성공 완료를 알린다.
Firmware file이 없으면 loading에 `-1`을 써 실패를 통지한다. `1`, data 전송, `0`의 순서는 protocol이므로 중간 단계가 누락되면 driver가 정상 firmware를 받지 못할 수 있다. 이 예제는 원문 그대로 보존하지만 production script에서는 변수 quoting, POSIX test operator, path 검증과 write error 처리도 고려해야 한다.
add event가 firmware bytes 또는 실패 상태로 끝나는 분기다.
sysfs firmware loading protocol에서 각 write가 나타내는 상태다.
Script가 event와 sysfs path를 구성할 때 사용하는 입력이다.
#!/bin/sh
# Simple hotplug script sample:
#
# Both $DEVPATH and $FIRMWARE are already provided in the environment.
HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
if [ "$SUBSYSTEM" == "firmware" -a "$ACTION" == "add" ]; then
if [ -f $HOTPLUG_FW_DIR/$FIRMWARE ]; then
echo 1 > /sys/$DEVPATH/loading
cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data
echo 0 > /sys/$DEVPATH/loading
else
echo -1 > /sys/$DEVPATH/loading
fi
fi
요약·해설
hotplug-script:1-17Firmware hotplug script는 `DEVPATH`와 `FIRMWARE`를 받아 sysfs의 `loading`·`data` file로 image를 전달한다. Loading에 1을 쓴 뒤 data를 전송하고 0으로 성공을 끝내며, image가 없으면 -1을 기록한다.
원문은 최소 동작 예제이므로 실제 배포에서는 shell 호환성, 변수 quoting, path와 write 실패를 별도로 방어해야 한다.
요청부터 성공·실패 통지까지의 최소 순서다.