Не смотря на источник ядра, который зависел бы от определенной микросхемы SD и ее драйвера ядра. Необходимо посмотреть на таблицы данных и источник ядра. Например, на моем ноутбуке:
$ lspci | grep SD
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)
По-видимому, микросхема реализует конечный автомат SD в аппаратных средствах и некоторый интерфейс микросхемы к хосту (PCI, в случае моего). Специфические особенности соединения микросхемы к карте могут быть абстрагированы микросхемой, но вероятно, что выбор может быть под влиянием хоста. Ядро, вероятно, пойдет с самыми быстрыми доступными средствами, если не будет известная ошибка.
Обновление: проверенный источник ядра. Если карта поддерживает 4-разрядные передачи, им включают автоматически. Вы видите это в drivers/mmc/core/mmc.c
, функция mmc_init_card()
. Для Linux 2.6.38, строка 489, кажется, активирует высокоскоростные передачи, и строка 535, кажется, активирует передачи 4 бита шириной. Не позволяйте ‘mmc’ смутить Вас. Этот каталог содержит драйверы, которые обрабатывают SD (включая SDIO) карты, а также MMC.
добавьте переключатель-h
touch -h -t 201301291810 myfile.txt
Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, --no-create do not create any files
-d, --date=STRING parse STRING and use it instead of current time
-f (ignored)
-h, --no-dereference affect each symbolic link instead of any referenced
file (useful only on systems that can change the
timestamps of a symlink)
-m change only the modification time
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
Вам, возможно, понадобится более поздняя версия touch
. Если это не опция, и если Вы знаете C, Вы могли бы записать небольшую программу, чтобы сделать это сами использование функции lutimes.
Грубая сила путь следующие:
0. delete the old symlink you wish to change
1. change the system date to whatever date you want the symlink to be
2. remake the symlink
3. return the system date to current.
atime и mtime символьной ссылки могут быть изменены с помощью lutimes
функция. Следующая программа работает на меня на MacOSX и Linux для копирования оба раза от произвольного файла до символьной ссылки:
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/time.h>
int
main(int argc, char **argv)
{
struct timeval times[2];
struct stat info;
int rc;
if (argc != 3) {
fprintf(stderr, "usage: %s source target\n", argv[0]);
return 1;
}
rc = lstat(argv[1], &info);
if (rc != 0) {
fprintf(stderr, "error: cannot stat %s, %s\n", argv[1],
strerror(errno));
return 1;
}
times[0].tv_sec = info.st_atime;
times[0].tv_usec = 0;
times[1].tv_sec = info.st_mtime;
times[1].tv_usec = 0;
rc = lutimes(argv[2], times);
if (rc != 0) {
fprintf(stderr, "error: cannot set times on %s, %s\n", argv[2],
strerror(errno));
return 1;
}
return 0;
}
Если Вы называете скомпилированный файл copytime
, затем команда copytime file link
может использоваться, чтобы заставить ссылку иметь тот же atime и mtime как file
делает. Не должно быть слишком трудно изменить программу для использования времен, указанных на командной строке вместо того, чтобы копировать времена из другого файла.