2012-04-04 4 views
5

एक सी प्रोग्राम में, मैं लिनक्स कर्नेल को एसएसडी डिस्क पर एक ब्लॉक को टीआरआईएम में कैसे बता सकता हूं? मुझे लगता है कि मुझे open() डिवाइस और fcntl() यह कुछ है, लेकिन क्या? इसे सामान्य होने की आवश्यकता है (यानी विभिन्न एसएसडी डिस्क के साथ काम करें)एसएसडी डिस्क पर एक ब्लॉक TRIM कैसे करें?

नोट: डिवाइस पर कोई ext4 फाइल सिस्टम नहीं है, केवल कच्चा डेटा।

उत्तर

6

आप इसे IOCATADELETE भेज देंगे। कुछ ऐसा:

//header - may already be defined 
#define IOCATADELETE _IOW('a', 104, off_t[2]) 

//code 
int fd = open("/dev/abc", O_RDWR | O_DIRECT); 
off_t ioarg[2]; 
ioarg[0] = 0; //block number 
ioarg[1] = 0; //size 
ioctl(fd, IOCATADELETE, ioarg); 
close(fd); 
+0

धन्यवाद, मुझे यह चाहिए कि मुझे – Nulik

+0

क्या चाहिए "104"? क्या यह टीआरआईएम कमांड की संख्या है या इसमें कई संख्याएं हैं? –

संबंधित मुद्दे