We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
본격적으로 Refactoring을 하기에 앞서서 어떻게 하면 좋을 지 나름의 생각을 정리해 보았습니다:
여기서 목표는, 평가 수단이자 refactoring 방향의 이정표입니다.
unsafe
궁극적으로 모든 unsafe 코드를 고칠 수는 없지만, 줄이는 것은 검증에 도움이 됩니다. 어떤 코드가 unsafe Rust인지는 Rust book에 나와 있습니다: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html
좀 더 공격적으로 unsafe한 코드를 fine graining 해 봅시다!
현재 코드를 많은 부분 OOP스럽게 만들 수 있습니다:
new()
Option
Result
enum
SPCI_SUCCESS
HfVCpuRunReturn
intid
{mm, mpool, page}.rs
*addr_t
api.rs
if blah { return -1; }
?
RawSpinLock
SpinLock
api_vcpu_prepare_run
cpu.rs
vm.rs
pub
dlog.c
lock
WRITER
SpinLock<XXXState>
Arc
각각의 항목에 대해서 세부 issue를 만들 예정입니다. 또 다른 제안 사항이 있으시면 말씀해 주세요~
The text was updated successfully, but these errors were encountered:
api.rs 에 있는 goto 문, 그리고 if blah { return -1; } 과 같은 코드를 RAII와 ? 로 깔끔하게 만들기 - 이걸 먼저 하지 않으면 다른 api.rs 리팩토링을 할 때 실수할 가능성이 높아집니다!
Sorry, something went wrong.
Add Apache license header to Rust files. (#11)
6cc099d
* Add Apache license header to Rust files. * Add Apache license header to Rust files.
No branches or pull requests
본격적으로 Refactoring을 하기에 앞서서 어떻게 하면 좋을 지 나름의 생각을 정리해 보았습니다:
목표
여기서 목표는, 평가 수단이자 refactoring 방향의 이정표입니다.
unsafe
block의 수와 양 줄이기궁극적으로 모든 unsafe 코드를 고칠 수는 없지만, 줄이는 것은 검증에 도움이 됩니다. 어떤 코드가 unsafe Rust인지는 Rust book에 나와 있습니다: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html
좀 더 공격적으로
unsafe
한 코드를 fine graining 해 봅시다!Encapsulation
현재 코드를 많은 부분 OOP스럽게 만들 수 있습니다:
new()
로 초기화하기Use rich type system
Option
또는Result
로 나타내기: UseResult
to represent success or fail. #34enum
사용하기방법
쉬움
enum
으로 바꾸기 (ex.SPCI_SUCCESS
): Use better types instead of constants and unions #13HfVCpuRunReturn
enum
으로 바꾸기: Use better types instead of constants and unions #13intid
에 대한 type alias 만들기: Use better types instead of constants and unions #13{mm, mpool, page}.rs
에 있는 주소를*addr_t
로 바꾸기: Use better types instead of constants and unions #13중간
api.rs
에 있는 goto 문, 그리고if blah { return -1; }
과 같은 코드를 RAII와?
로 깔끔하게 만들기RawSpinLock
대신SpinLock
쓰기, 단순히 전체를 lock하는 것으로 시작: UseSpinLock
instead ofRawSpinLock
#20api_vcpu_prepare_run
에 대하여, 대기 중인 PR 반영하기 (A test got slower afterapi_vcpu_prepare_run
was ported #10 과 관련): Apply the PR on the locks of VCpu. #22api.rs
에 있는 코드를 다른cpu.rs
나vm.rs
로 분산시키기 (접근하는 데이터에 따라서)pub
제거하기: Remove unneccessarypub
s. #12dlog.c
의lock
함수가 Rust의WRITER
lock을 잡도록 하기: #어려움
SpinLock<XXXState>
로 만들기Arc
같은 걸 집어넣기각각의 항목에 대해서 세부 issue를 만들 예정입니다. 또 다른 제안 사항이 있으시면 말씀해 주세요~
The text was updated successfully, but these errors were encountered: