여러가지 일이 겹쳤다는 핑계를 둘러댄다 할지라도, 아무튼 -- V-Share 및 역어셈블에 대한 진도가 정말 조금씩밖에 못나가고 있고, V-Share의 SGM.dll 은 이번달 안에는 힘들다고 확신을 하게 될 지경이 되었습니다 -_-
그래서 화풀이로.. 다른 것들을 하고 있습니다. 완성되면 그때 다시 블로그에 남기겠지만, JVM 소스코드를 보던중 System.currentTimeMillis()의 리눅스쪽 코드를 보게 되었습니다.
1072 jlong os::javaTimeMillis() {
1073 timeval time;
1074 int status = gettimeofday(&time, NULL);
1075 assert(status != -1, "linux error");
1076 return jlong(time.tv_sec) * 1000 + jlong(time.tv_usec / 1000);
1077 }
음.. 그래도 뭔가 다른 것을 원했는데 [세컨드 * 1000 + 나노세컨드 / 1000] 이라니 -_-;; 이번엔 win32 소스코드를 구경해봅니다.
617 jlong windows_to_java_time(FILETIME wt) {
618 jlong a = jlong_from(wt.dwHighDateTime, wt.dwLowDateTime);
619 return (a - offset()) / 10000;
620 }
631 jlong os::javaTimeMillis() {
632 if (UseFakeTimers) {
633 return fake_time++;
634 } else {
635 FILETIME wt;
636 GetSystemTimeAsFileTime(&wt);
637 return windows_to_java_time(wt);
638 }
639 <span style="font-family: arial,verdana,sans-serif;">}</span>
GetSystemTimeAsFileTime으로 DWORD 2개짜리 FILETIME 구조체로 시스템 시간을 얻어옵니다. 이 값을 jlong으로 변환한 뒤, 이 시간이 100 나노세컨드의 정밀도를 가지므로 이것을 10000 으로 나눕니다. 으음..
Solaris 코드도 봤는데, 리눅스쪽과 구현이 동일하네요. 아아 그런것이였어 그런거였어.. -_-; 시스템에서 제공되는 코어 API 부분들에 대한 소스코드를 보면 느껴지는 허무함은 여전합니다. 2년전쯤 perky님이 보여주신 realloc 의 코드의 기억이 납니다. realloc 요청된 크기만큼 새로 malloc 한다음 이전것은 free 하고 memcpy 하던 소스코드..
환상을 없애는 그 날까지 아잣!
Continue Reading
Discover more thoughts and insights
ADHD 약물 복용 첫날
메텔페니데이트(MPH) 1일차. 첫 복용을 한 지 3시간이 지났다. 태어나서 복용했던 그 어떤 약물보다도 임팩트가 크다. 조금 억울해졌다. 왜 병원을 마흔 살이 되어서야 갔을까. ADHD는 의지의 문제가 절대
프로그래머로 살던 나는 어디로 갔을까
한창 나우누리 타자방에 빠져 폐인생활을 거듭하던 일천구백구십팔년 가을. 자바 애플릿을 쓰면 채팅을 만들기 쉽다는 일념하에 자바에 올인했다. 기초부터 차근차근 밟지 않고 오직 채팅 클라이언트와 서버를 만들겠다는
구직을 시작하며 드는 생각: 경험이란 무엇일까
런던에 와서 영어에 자신감을 가지기 위해 language swapping을 하며 조금씩 런던에 익숙해지고 있다. 그러던 며칠전 집을 렌트하고 어제는 IKEA에 가서 가구들을 지르기 시작했다. 집세도 6개월치 미리