2014年5月27日 星期二

cache copy back and cache invaliate

/* MemMgr_CacheInvalidate() is used to invalidate the cache tags with the specific memory section. */ SCODE MemMgr_CacheInvalidate(HANDLE hObject, DWORD dwVirtAddr, DWORD dwSize); /* MemMgr_CacheCopyBack() is used to copy data from cache back to external memory with the specific memory section. */ SCODE MemMgr_CacheCopyBack(HANDLE hObject, DWORD dwVirtAddr, DWORD dwSize); 當 CPU 處理過記憶體位置(from EDMC)所指的資料且HW engine要使用該位置資料時 , 需對此位置呼叫MemMgr_CacheCopyBack(). application ---> CPU (cache) ---> Memory <---- HW 當 HW 處理過記憶體位置(from EDMC)所指的資料且CPU 要使用該位置資料時, 需對此位置呼叫MemMgr_CacheInvalidate() (告訴CPU此位置的 cache tag無效, CPU要去external memeory取得此位置的資料) HW ---> Memory <--- CPU (cache) <--- application

2013年10月30日 星期三

心情好複雜

哎!現在心情好複雜... 為什麼另一半總是不能多多體諒我的心情... 照成今天這樣的局面...雖自己也有問題...但夫妻不就是要能夠多為對方想想麻? 有了小孩...讓我很難做切斷夫妻關係的決定...做下這決定...對小孩真的是一種傷害... 若選擇婚姻繼續下去....我也很痛苦....都要去忍受妳那難溝通的態度.... 妳回去的這幾個月來...自己也改變自己...不那麼固執...對妳好一點...但似乎那些好對妳來說似乎永遠都不夠.... 一邊是自己的父母...一邊是自己的老婆與小孩... 好想脫離你們之間....但自己捨不得小孩... 今天打電話給妳... 似乎妳冷冷的口氣...讓我真的心冷了.... 好難過... 這些痛苦也不知向誰說...

2013年7月4日 星期四

How to recovery MBR

For raid :


1. The following is how to create Ubuntu live USB: 

http://blog.xuite.net/yh96301/blog/57645340-%E5%85%8D%E8%B2%BB%E8%A3%BD%E4%BD%9CUbuntu+Live+USB%E9%96%8B%E6%A9%9F%E9%9A%A8%E8%BA%AB%E7%A2%9F%E7%9A%84%E8%BB%9F%E9%AB%94unetbootin


2. check the raid device id :

When "df -h", will see the following raid partitions: 

/dev/mapper/isw_dcgajhgdje_Volume0p1 (/)
/dev/mapper/isw_dcgajhgdje_Volume0p5 (/home)

The "/dev/mapper/isw_dcgajhgdje_Volume0" is raid id.

3. After enter Ubuntu live USB:


mkdir /mnt/sda

mount  /dev/mapper/isw_dcgajhgdje_Volume0p1 /mnt/sda
mount --bind /proc /mnt/sda/proc
mount --bind /dev /mnt/sda/dev

chroot /mnt/sda
grub-install /dev/mapper/isw_dcgajhgdje_Volume0p

2011年9月20日 星期二

real time, user time, sys time of a process

針對一個process的時間統計:

real==>指逝去的時間(elapsed time)(time of waiting for I/O to complete + time used by other processes)(透過gettimeofday()或times()收集)
user==>指CPU執行該process的user-mode code的時間(透過 times()收集)
sys==>指CPU執行該process的kernel-mode code的時間(透過times()收集)
User+Sys==>指CPU真正執行該procees的時間(可透clock()收集)

http://www.gnu.org/s/hello/manual/libc/CPU-Time.html#CPU-Time
http://osr600doc.sco.com/en/SDK_c++/_Measuring_Program_Execution_Tim.html


#include stdio.h
#include time.h

#include sys/param.h
#include sys/times.h
#include sys/types.h

int main(){
int i;
struct tms t,u;
long r1,r2;
struct timeval start, end;
clock_t start_c, end_c;
gettimeofday(&start, NULL);
r1 = times(&t);
start_c=clock();
for(i=0;i < 10000 ;i++){
printf("hello!!\n");
}
end_c=clock();
r2 = times(&u);
gettimeofday(&end, NULL);
printf("\nHZ=%d\n",HZ);
printf("user time=%f\n",((float)(u.tms_utime-t.tms_utime))/(HZ));
printf("system time=%f\n",((float)(u.tms_stime-t.tms_stime))/(HZ));
printf("real time=%f\n",((float)(r2-r1))/(HZ));
printf("real time(gettimeofday())=%f\n", (float)((end.tv_sec * 1000000 + end.tv_usec)- (start.tv_sec * 1000000 + start.tv_usec))/1000000);
printf("user+real=%f\n" ,((double) (end_c - start_c)) / CLOCKS_PER_SEC);
return 0;
}


output:
hello!!
.....
hello!!

HZ=100
user time=0.000000
system time=0.020000
real time=0.150000
real time(gettimeofday())=0.151931
user+real=0.020000


clock()的實作:

#include sys/times.h
#include sys/param.h
#include time.h
#include unistd.h

clock_t clock(void) {
struct tms buf;
times(&buf);



#if CLOCKS_PER_SEC == HZ
return (unsigned long) buf.tms_utime + buf.tms_stime;
#elif CLOCKS_PER_SEC % HZ == 0
return ((unsigned long) buf.tms_utime + buf.tms_stime) * (CLOCKS_PER_SEC / HZ);
#elif HZ % CLOCKS_PER_SEC == 0
return ((unsigned long) buf.tms_utime + buf.tms_stime) / (HZ / CLOCKS_PER_SEC);
#else
return ((unsigned long long) buf.tms_utime + buf.tms_stime) * CLOCKS_PER_SEC / HZ;
#endif
}

2011年9月6日 星期二

##巨集定義的用法

/*
~/tmp$ gcc -D_CACHE=arm920 -g -static -o test test.c
~/tmp$ ./test
call arm920_dma_flush_range()!!
~/tmp$ gcc -D_CACHE=arm926 -g -static -o test test.c
~/tmp$ ./test
call arm926_dma_flush_range()!!
~/tmp$

*/


#include

#define ____glue(name,fn) name##fn

#define __glue(name,fn) ____glue(name,fn)

void arm926_dma_flush_range(){

printf("call arm926_dma_flush_range()!!\n");
}
void arm920_dma_flush_range(){

printf("call arm920_dma_flush_range()!!\n");
}


#define dmac_flush_range __glue(_CACHE,_dma_flush_range)



int main()
{
dmac_flush_range();
return 0;
}

2011年4月14日 星期四

黃小琥的伴

有時在夜深人靜時聽著這首歌~難免心情會起伏~眼淚也不聽使喚地會掉下來~自己到了現在這個年紀~能找到歌詞中所描述的伴~對我來說似乎很難~~~

2011年3月25日 星期五

只是情緒的抒發.....

車也買了...工作也滿穩定的...但現在自己似乎被感情事所影響著...

唉...不久前的那個感情傷害似乎對自己很大...本是對愛情充滿著理想的人...

經歷這些感情的不順遂...漸漸讓自己對感情變得不信任與不安...

如夢醒時分中所說的 "早知道傷心總是難免的...自己又何苦一往情深..."....

放低標準?或堅持下去?或是真的一切隨緣了?

真的喜歡自己和珍惜自己...只有自己了...只有自己能走的出來...

多愛自己一點~這一陣子傷心夠了...趕快走出來吧....小灰等你陪他到台灣各處去....

小D也等你帶他去各地去開開眼界....