int init_device (void) {
if (allocate_memory() != SUCCESS)
goto out1;
if (setup_interrupts() != SUCCESS) goto out2;
if (setup_registers() != SUCCESS)
goto out3;
return SUCCESS;
out3:
teardown_interrupts();
out2:
free_memory();
out1:
return ERROR;
}
int init_device (void) {
if (allocate_memory() == SUCCESS) {
if (setup_interrupts() == SUCCESS) {
if (setup_registers() == SUCCESS) {
... more logic ...
return SUCCESS;
}
teardown_interrupts();
}
free_memory();
}
return ERROR;
}
오 괜찮네 이거
init.then(alloc).then(setup).then(register).catch(rollback) 이런느낌인가
ㄴ 아조씨...