여러가지 일이 겹쳤다는 핑계를 둘러댄다 할지라도, 아무튼 -- 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
스프링노트 Java API 0.7 릴리즈
스프링노트 API for Java 를 0.7로 릴리즈 하였습니다. 기능 변경은 없으며, 돌아오는 9월 17일부터 변경될 API Call 방식(SSL)을 지원합니다. 아니, 지원한다기보다 이전 방식(http)을
Quercus 님에게 낚이다
수년간 위키를 한번도 안써봤다. 그런데 얼마전 들어간 회사에서는 위키를 쓴다. 써보니 좋네? 사람들에게 물어보니 moni 나 moinmoin 이 좋다고 한다. 그래 방명록도 없고 -\_- 트랙백도 달 수 없으면서
MSN 타자봇 만드는 중 부르르~
때는 7월 3일 월요일 오후 6시 40분, 위치는 내셔널그리드.. 저녁을 먹을까 말까 고민하다가 슬며시 소리낸다. 이렇게 집에 와버렸다. 집에와서.. '뭐하지'를 10번 정도 반복하다보니 개인프로젝트 해야겠다는