Старшая собака агрессивна по отношению к новому щенку

Вот что я делаю. Я использую выход(1), а не дополнительными заявлениями убежать, потому что бежать с заявлениями трудно для людей, чтобы читать.

Это от моего .bashrc следующее

### Установить подсказки, как "имя_пользователя@имя_хоста:~ $"
# Вижу: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
# И: http://mywiki.wooledge.org/BashFAQ/037
# 'выход смелые' будет работать независимо от цвета переднего плана и фона.
# Место выход выход на переменные, так они только execd раз.
смелый=$(выход жирным шрифтом)
сброс=$(sgr0 выход)
экспорт ПС1="и\U@\[$смелые\]\Н\[$сброса\]:\Вт \$ "

Вот еще одна альтернатива. Это гораздо более читабельным, то escape-последовательности.

# Баш
красный=$(выход setaf 1)
зеленый=$(выход setaf 2)
синий=$(выход setaf 4)
сброс=$(sgr0 выход)
И PS1='\[$красный\] и\U\[$сброса\]@\[$зеленый\]\Н\[$сброса\]:\[$синий\]\ш\[$сброса\]\$ '
+364
Carta Genero 16 янв. 2018 г., 12:06:11
24 ответов

В то время как я был настройка это первый (ну, третий, если честно) арка попытки установки я забыл отредактировать загрузочные записи, созданные после установки бета-версия grub2 с Пакман. Поэтому, конечно, когда я перезагрузился, чтобы проверить мои настройки, не только я считаю, что моя система не загрузится, но у меня уже нет загрузочной записи для загрузки с USB образ для восстановления. Облом.

Мне удалось установить корень вручную и Boot в USB, но, прежде чем я смогу благополучно добраться до корня подскажите я попал в эту пресловутую ошибку:

Ошибка: 'файл/dev/диск/на этикетке устройства не появляются после 30 секунд...

и

Ш.: Не могу открыть телетайп: контроль работы отключены

Я посмотрел несколько решений и до сих пор нет кости. Если я пропустил что-то пожалуйста, дайте мне знать:

  • поверяемый прибор обнаружения с кошка /proc/SCSI и/SCSI и
  • ЛН-ы[Ф] /Дев/СДА /Дев/диск/при-метка
  • archisodevice=ARCH_201611
  • udevadm триггера
  • смонтировать /dev/ПДД[1] /bootmnt/archiso
  • переименование USB-накопитель для ARCH_201611*
  • мВ на /dev/диск/на этикетке/ARCH_201611 на /dev/диск/на этикетке/ARCH_201611*

*(см. ниже)

Я переформатировал флешку в ext4, как и с GPT и использовать ДД для загрузки ISO как в руководстве по установке. Я устанавливаю арки на t420s ноутбук с 2520M процессор Intel i5 и с UEFI.

Возможно, проблема в том, что я не промаркирован должным образом диска? Я использовал диск на моем Mac (2015 сетчатке ПМБ), чтобы переименовать флешку для ARCH_201611, вытрите его, а затем перезагрузить ИСО с ДД. Когда я ставлю выше переименовать метод, там уже есть ярлык для ARCH_201611 в /Дев/ каталог. Однако, сообщение об ошибке всегда печатает на/dev/диск/по-ярлык - не в/dev/диск/на этикетке/ARCH_201611. Вполне возможно, что устройство ярлыков, изменяются при изменении ИСО нагрузок, но как macOS не удается подключить устройство после ИСО загружается, я не знаю ни одного способа, чтобы применить новую метку к устройству. Какие-либо рекомендации?

Может, если бы я мог изменить свой загрузочной записи - как бы я поступил в корневой файловой резервную оболочку?

В то же время, может быть, я попробую загрузиться...

ЗЫ: я знаю, что этот вопрос принадлежит на арке форумах, но так как у меня нет рабочей установки на данный момент, я не могу сделать вывод нужны, чтобы ответить на сегодняшний день -от U +%в$(команде uname)... вопрос требует создать учетную запись.

+949
godfried pimlott 03 февр. '09 в 4:24

Попробуйте это:

СЭД -нэ '/^.\{43\}$/з/\т/, /г;/^.\{44\}$/С/\Р/./ГП' ввод.Файл > Новый.файл

или если ты на Мак ОС:

СЭД -нэ $'/\^.{43\}$/з/\т/, /г;/^.\{44\}$/С/\Р/./ГП' ввод.Файл > Новый.файл

Я добавил пробел после запятой в соответствии с ожидаемой выходной. Вот почему во втором матче на 44, а не 43 символа.

+923
kishan godhani 30 нояб. 2011 г., 06:01:31

Есть отдельные поля для национальной ID-карты и паспортные данные. Введите оба, если у вас есть оба.

+914
mgambhir 9 февр. 2016 г., 01:26:49

Вы можете найти УДС-о ИЦИ журналы по http://ubottu.com/uds-logs/. Вы также найдете архивные УДС журналы есть.

+881
Amoksi36 5 сент. 2010 г., 07:36:13

Просто используйте сочетание клавиш Ctrl-альт-дель комбинацию клавиш я.е нажмите клавиши Alt, Ctrl и delete вместе. На экране появится диалог завершение работы с выключение, перезагрузка и гибернация.

+828
parovozik72 16 мая 2023 г., 02:53:24

Я успешно установлены драйверы ATI после этого ответа.

Этот ответ объясняет:

  • как удалить драйвер это не удалось
  • установить драйвер с открытым исходным кодом (это временный шаг)
  • скачать последний драйвер на веб-сайте компании ATI
  • и установить его
+772
S818 9 апр. 2010 г., 12:38:34

Я испытываю те же симптомы, как описано в следующем:

"Нексус 7 застрял в цикл перезагрузки после полной разрядки "

Мой Nexus 7 является полностью разряжен. У меня подключен к Фабрика AC-к-адаптер USB. Это циклы через загрузки, звуковой сигнал ... остается, возможно, на 10-20 секунд ... достаточно долго, чтобы отобразить "0% заряда" ... а потом опять себя полномочия вниз, с другой тон. В некоторых случаях, когда он отключает дисплей показывает 'статический' с сопровождающими белый шум звук, как старый телевизор.

Меня он подключен уже более 4 часов ... и циклически, наверное, 2-3 десятка раз.

Любые идеи?

+746
goldengolden123 7 окт. 2022 г., 23:51:26

Я базирую это наблюдать эти рецепты все из пораженной кухня. Я использую все тот же сайт с мыслью, что я хочу того же лица (или по меньшей мере адаптации) все рецепты.

Вот быстрое приближение мокрого на сухой для каждого (не считая небольшого количества закваски или специи, или такие вещи, как яблоки, которые оба мокрые/сухие ингредиенты):

  • кукуруза: сухой 2.25 с. до 1,5 с. Мокрое
  • оливковое масло: с. Сухой 2.75 до 1.5 с. Мокрое
  • тыква: с. Сухой 2.75 до 1.5 с. Мокрое
  • малина: с. Сухой 3.15 до 1,7 с. Мокрое
  • рикотта: сухой 3.75 с. до 2,5 с. Мокрое
  • сметанный крем: сухой 2.25 с. до 1,75 с. Мокрое
  • пшеница: 3 с. Сухой до 1,75 с. Мокрое

Как видите, большинство рецептов уже около 3 чашки сухие ингредиенты в 1,5 или 2 чашки сырых ингредиентов. Чтобы быть более подробным:

  • Большинство рецептов имеют около 1 С. муки и 1 С. сахара.
  • Около 1/2 С. из жиров (сливочного или растительного масла).
  • Между 0-2 большие яйца...так что я бы попробовал 1 яйцо Для начала.
  • Между 1/2 чайной ложки. и 1 ст. пищевая сода...так что я бы попробовать 2 чайные ложки.
  • 1/2 чайной ложки. соли.

Что же касается других вопросов, я думаю, что остальные респонденты прибил:

  • Капкейки глазурью, кексы могут иметь легкое обледенение на большинство.
  • Регулировка для ягод, других фруктов и так далее во многом зависит от сезона.
+640
ChewToy 7 февр. 2016 г., 23:41:05

Попробуйте:

$ на awk '
{
 gsub(/[^[:Альфа:] ]/,"");
 Для(я=1;я<=НФ;я++) {
 а[$я] = а[$я] ? а[$я]", "ФНР : ФНР;
}
}
Конец {
 для (I в) {
 печатать я": "а[я];
}
}' файл | отсортировать 
Ответ: 3, 4
Являются: 5, 6, 8
Б: 6, 10
БФГ: 5
С: 1, 7, 8
КБ: 2
Как: 5
Вы: 5
+631
Malcolm Pool 7 февр. 2017 г., 04:40:24

Я применил для моей семьи, чтобы посетить Великобританию и они отказали, потому что она заявила, в форме она будет на 10 дней и она не обеспечивает ее счет, так что не доказать ее ежедневных обстоятельств, а также не доказывать, как я поддерживаю ее и они увидели большие потоки денег в аккаунт я дал и нет источника дохода, несмотря на обеспечение моей компании детали. Что я должен делать?

+478
brocking 25 окт. 2018 г., 02:54:29

Я второй вызывающий предложение карточки, но это будет проще для вашей подруги (и для вас) если вы только для поиска Google и покупать их в интернете. Вам не нужна физическая карта для звонков-только коды.

Просто выберите любой из топ в гугле и вы должны быть в порядке - вы сможете использовать его в течение 2 минут с момента покупки, и цены сопоставимы с тарифам Skype на звонки на мобильные или стационарные.

+430
Syed 20 июн. 2021 г., 15:19:55

Если вы хотите продлить его в UTF-8 символов:

$ Перл-ка -Ле печать ОГА смены 
128520

$ Перл-СУ-Ле-печати ЧР смены 128520

С Баш, КШ или ЗШ примитивы:

$ е "и\U$(е %08x 128520)\Н"

+419
user1067920 20 мая 2019 г., 00:48:56

Есть ли у кого опыт работы с Windows 10, имея определенный драйвер вопросов на аналогичной Mac, который поддерживает только (и драйверами Bootcamp для) для Windows 7? У меня это МасВоок Pro: Apple МасВоок Pro "Соге 2 Duo" 2.4 17" (СР) технические характеристики

Яблоко Поддерживает до Windows 7 на Mac с драйверами буткемп. Я обновил ее до Windows 8 (не поддерживается Apple) и он все еще работает просто отлично (Windows 8.1 теперь), за исключением некоторых закидонов, как громкость/яркость ободок не появляется, когда я использую те элементы управления.

Я немного обеспокоен тем, что установка Windows 10 может сломать то, что не может быть фиксированной, и мне придется стереть все и выяснить, как вернуться к Windows 8, которая будет боль. Кто-нибудь знает, если Windows 10 успешно сможете использовать Windows 7 драйверами Bootcamp? ...или я должен быть один, чтобы проверить его и посмотреть, если он работает нормально? :Д

+383
EduardoVaz 14 дек. 2015 г., 12:18:51

Вы должны проверить разрешения в ваш Парагон.приложение (управления нажмите кнопку, прочитал информацию, я думаю) вы найдете то, что вы ищете в конце.

Пример :

enter image description here

Нажмите на замок, чтобы внести необходимые изменения.

Если вы не можете изменить эти значения, вам может понадобиться отключить систему защиты целостности - СИП (который активируется в Эль-Капитан по умолчанию), при загрузке в однопользовательском режиме и работает csrutil отключить.

Удачи

+379
mipicdev 3 июл. 2011 г., 18:55:32

Для редактора Emacs 24+ я написал еще одну функцию, потому что функция Жиль не работает для меня (не знаю почему).

(сайт defun перейти к строке-и-колонки-Конд (ЛНР-Конд)
 "Разрешить спецификация строка:столбец или строку,столбец вместо всего столбца. 
Просто :столбец или столбец перемещается заданного столбца в текущей строке. 
Одна линия по-прежнему движется к началу указанная строка (как строка:0 или строка,0). 
По умолчанию я привязать его к М-Г М-L. 
Значение по умолчанию столбца уменьшается на -1 
потому что все компиляторы учитывать количество столбцов от 1 (только для копирования-прошлое)"
 (интерактивная "слайн:колонки:: ")
 (пусть (строки столбца делим Макс-линии)
 (setq Макс-линий (число линий (точка-мин) (точка-максимум)))
(сохранить-матч-данные
 (строка-матч "^\\([0-9]*\\)\\([,:]?\\)\\([0-9]*\\)$" ЛНР-Конд)
 (setq строки (строки в число (матч-строку 1 ЛНР-фанкойл)))
 (setq делим (матч-строка 2 ЛНР-фанкойл))
 (setq столбца (строки в число (матч-3 струны ЛНР-фанкойл)))
 (если (не (равно делим "")) (если (столбец> 0) (setq столбца (1 - колонка))))
 (если (= 0 линия) (setq линии (линия-номер-по-поз)))
 (если (> линия Макс-линий) (setq линия Макс-линии))
 (Гото-линия)
 (перейти в столбец)
 (сообщение "установить маркер в строке %d "столбец" %s" (линия-кол-во-пос) (текущая колонки))
)))

(глобальный-набор-ключ (КБД "М-Г М-Л") на линии-и-колонки-Конд)
+361
B9IJIbIu 17 авг. 2011 г., 04:20:08

Блок содержит фактические данные в файл, поэтому, как правило, мы хотим, чтобы блок, чтобы быть как можно больше, при этом имея достойную производительность. Получается, что довольно хороший размер для блока размером страницы. Цитировать система ext4 Вики:

Размер блока задается во время создания файловой системы и обычно составляет 4 КИБ. Вы можете опыт монтажа проблем, если размер блока превышает размер страницы (т. е. 64KiB блоков на платформах i386, который имеет только 4 КИБ страниц памяти).

В "сокращение времени" означает время, в которое создается файловая система. Поэтому размер блока фиксируется после того, как мы создали файловую систему, и будет 4 КИБ, скорее всего.

Иноды нужно только содержать указатели на блоки данных (а также некоторые мета-информацию о файле - время последнего обращения к нему, что пользователей он принадлежит и т. д.). В другой раздел Вики, они заявляют, что

По умолчанию, индексный дескриптор в ext4 записи 256 байт, и (по состоянию на октябрь 2013) в структуре inode составляет 156 байт [...]. Дополнительное пространство между концом структуре inode и конец инода запись может использоваться для хранения дополнительных атрибутов. Каждый inode запись может быть как большой размер блока файловой системы, хотя это не страшно эффективным.

Так что мы могли бы действительно сделать иноды, как блоки, но в реальной системе это, наверное, не тот случай. В случае, если вам интересно, инода структура говорит только о указатели на блоки данных. Так у нас 156 байт указателей на содержимое файла, но вся инф занимает 256 байт - в принципе, у нас есть 100 байт мы можем использовать на досуге, по каким метаданных, которые мы желаем.

Короче, ext4 является очень настраиваемый. Но шансы очень высоки, что ваш размер блока 4 КИБ, а инода записи 256 байт.

+324
Jessica F 25 апр. 2019 г., 17:35:47

Для чего это стоит, я служил на десятки комитетов нанимать преподавателей на Р1 институт, и у меня никогда не было стенограммы доступны для меня в составе материалов заявки. Поэтому мы не только не волнует, даже если нам не все равно мы не будем иметь возможности ничего с этим поделать. Это правда, что конкуренция высока и любые соответствующие Edge помогает, Но оценки не даже часть конкурса.

Возможно, что в отрасли или, возможно, даже в учебных заведениях, хотя в последнем случае я сомневаюсь.

+317
Eric Liu 20 февр. 2017 г., 22:39:58

Максим имеет сердце Zampaza; Людмила правую руку, и Диана левую руку. Учитывая, что они полные братья и сестры (насколько я знаю), и что Bubuki передаются lineally от родителя к ребенку, как получается, что они получили три Bubuki от двух родителей? А один из их родителей уже несколько Bubuki?

+266
passporto 16 окт. 2012 г., 11:53:29

Я пытаюсь сделать в GNOME-mplayer умеет воспроизводить видео в полноэкранном режиме на втором экране. Я использую карты Nvidia с xineramascreen. Ниже мой ~/.файл mplayer/config файл.

[по умолчанию]
xineramascreen=1

[в GNOME-mplayer'ом]
АО=алса:устройство=гв=1.0
некоторых случаях=все=5
Аланг=английский,Рус,Ан
сленг=английский,Рус,Ан
xineramascreen=1

Параметры не влияет, он играет на моей основной экран, как обычно.

Запустив mplayer с -xineramascreen 1 прекрасно работает, я просто хочу, чтобы в GNOME-mplayer'а работать с ней приятнее использовать с GUI и Наутилус интеграции и т. д.

+199
Aibeka 26 апр. 2014 г., 16:30:21

Я перенаправлен вывод команды, который возвращает несколько раз, 2 строки, 5 строк.. 100 строк и т. д. В файле.. и я буду использовать этот файл в если условие позже, чтобы проверить некоторые другие условия..

Странное дело - мне нужно выполнить несколько раз скрипт, чтобы получить данные, как ожидалось.. если я выполнить скрипт первый раз он просто ничего не возвращают.. пожалуйста, вы можете помочь, почему это не дает ожидаемого результата в первой гонке

Код для AIX и выглядит следующим образом:

ДФ-ГТ | грэп /главная/кошки/DB2 С/ > в /tmp/DISKREQ.ТМП
если [[ $? -с eq 0 ]]; затем
 команду chmod 777 /tmp/и DISKREQ.ТМП
 кот в /tmp/DISKREQ.ТМП | у awk '{печати 6$}' длины | на awk '($0) == 22' > /ТМП/DISKREQ.ТМП
 кот в /tmp/DISKREQ.ТМП | пока строки читать 
делать
 ДФ-г FSIZE_DISKREQ=` | у awk '$7 == "'$строка'" {печати $3;}"
 если [[ $FSIZE_DISKREQ -ЛТ 2 ]]; затем
Эхо
 Эхо " экземпляр дома $line справочник = $FSIZE_DISKREQ "
еще
Эхо
 Эхо " экземпляр домашний каталог $линия "
интернет
сделано
еще
Эхо
 Эхо "нет экземпляра домашний каталог смонтирован"
интернет
+193
sashabond 19 июн. 2014 г., 16:23:43

Это зависит в значительной степени от того, кто ими владеет.

Если ваша лаборатория в группе, и счастлив ваш руководитель достаточно, вы можете, вероятно, использовать их, когда вам нравится.

Если они принадлежат отдела/отдела/и т. д., То есть, скорее всего, будет формальной системы бронирования. После того как вы забронировали место, хотя, я представляю, что вы можете сделать любую работу, которая вам нравится на них.

Условиями в это стоимость и безопасность.

Стоимость, потому что некоторые вещи, о которых ты говоришь-это довольно дорого. ФМРТ сессии может быть предъявлено обвинение по более $400 долларов в час.

Относится безопасность для вас и оборудование. Вы также хотите, чтобы быть безопасным и не повредить оборудование, но это может быть легче сказать, чем сделать. Таким образом, вы никогда не будет позволено пользоваться некоторыми предметами, не пройдя необходимую подготовку - так что вам придется убедить вашего руководителя, что делает такие тренировки-это хорошее использование времени/средств.

Так что в вашей лаборатории, играть во время подозреваю, будет ограничен, сэкономить на оборудовании, которые вы используете ежедневно. Но если вы должны получить ваши руки на часть комплекта, не бойся, есть семинары и курсы вы можете посещать! Чаще всего они возникают в сочетании с конференции/встречи/и т. д какой-то, где число поставщиков будет необходимо "пожертвовать" часть оборудования (в надежде, что вы будете покупать той же марки, позже вниз по дороге) и в группе, вы получаете возможность потратить некоторое время, используя его в компании представителя зоркий глаз. Следите за этим, и попытаться договориться, чтобы опубликовать статью в конференции или выступить на собрании, и я уверен, что у вас будет финансирование идти.

+145
Inder Mohan 24 мар. 2016 г., 15:58:08

Моя дочь и я поделился с одной учетной записи iCloud для наших iPhone. У нее есть собственный Apple ID для покупки музыки. Мне нужно ей иметь свою собственную учетную запись iCloud как мои памяти. Она боялась, что если я удалить свой телефон из моего iCloud, в настройки она потеряет все свои контакты и т. д. Тогда есть ли способ, чтобы переместить элементы из одной учетной записи iCloud, чтобы вновь создаваемому?

+62
LondonGuy 1 нояб. 2014 г., 12:34:50

Я изучал, как правильно установить Watchdog на моей встроенной системе, прочитал много постов, но я застрял с не решение. Я читал:

Я даже дала глубокий взгляд на

но нет выхода на данный момент.

Так что я начну описывать мой аппаратного/программного обеспечения и объяснить, что я пытаюсь достичь, тогда я объясню, что я сделал и каков был результат. Надеясь, что кто-то из вас может мне точку в правильном направлении.

Harwdare:

на ДМП встроенной процессор Vortex86DX (A9111 @ 933Mhz), см. документацию по следующим адресам:

Это поддержка harwdare для 2 сторожевых таймеров (16C550 1 последовательный порт, порты ввода-вывода 4 порта) с Али (Асер лаборатории) аппаратный Watchdog M6117, 32.768 кГц с 24 битами счетчика. Таймер диапазонах от 30.5 U сек до 512 сек с разрешением 30.5 у ТРЦ. Когда раз срабатывает таймер; сброс системы, НМИ или IRQ может случиться.

БИОС:

Американский AMIBIOS мегатренды (62-0100-000001-00101111-110309-A9100-1ADSV000-Y2KC), дата BIOS 08/03/2011

ОС:

Выжать в Debian 6.0 с ядром Linux (# uname-Р) 3.2.0-0.БПО.4-486

Водитель:

Али M6117 Барбос версии v0.2 дана мне непосредственно производителем, который утверждает, что он может быть использован с моим ядром, и которая основана на Федерико Барей оригинальный драйвер для Linux 2.4.х (http://www.iar.unlp.edu.ar/~fede/ali_m6117.html)

Моя цель:

Поскольку эта машина установлена далеко от места, где я живу, и иногда он зависает, я вынужден взять мою машину и поехать туда, чтобы выполнить аппаратный сброс.

Я хочу настроить его так, что когда система зависает, машина способна сбросить себя.

Что я сделал:

Я собрал выше драйвер (сделать чистым, сделать) и я установил его (установка). Модуль правильно нашли в "лишние" папки путь ядра.

Я редактировал файл/etc/Барбос.конф файл и раскомментировали строку с/dev/сторожевой включить сторожевой таймер (и больше ничего, никаких других строк раскомментировать или добавить)

Я перешел в каталог /lib/модули/3.2.0-0.БПО.4-486/дополнительные папки и загрузил модуль insmod alim6117_wdt.ко

Проверено, что модуль был загружен сlsmod распечатывает и у меня

Модуль alim6117_wdt, размер 12565, используется 0 

(это становится 1, Когда я включить сторожевой таймер в BIOS)

Перезагрузил машину, вошел в BIOS и включить сторожевой 0, 0 сторожевой таймер 512sec, сторожевой 0 сигнала выберите "сброс"

Что я получил:

Система загружается нормально,я вижу сообщения про Барбоса, который включается/загружается, но через некоторое время он перезагружается с сообщением alim6117_wdt неожиданно близко, не останавливаясь Барбоса

Если я запускаю файл dmesg | Барбос я вам [0.017827] НМИ сторожевой таймер отключен (cpu0): события оборудования не включена, но я думаю это не важно, поскольку все, что мне нужно-это аппаратный сброс.

Я сделал еще одно испытание, не сумев, путем добавления в файл/etc/Барбос.конф файл следующие строки:

пинг = 127.00.0.1
интерфейс = lan0 

lan0 - это правильное название интерфейса Ethernet, полученных с помощью ifconfig команды. Или я должен использовать Ло как интерфейс, так как я пытаюсь пинговать петлевой интерфейс?

Просто в случае каких-либо помочь, последние сообщения я вижу, когда система завершает его загрузки:

остановки сторожевой поддержания демон....
stargint сторожевой демон....
startpar: сервис(ы) отказа returnet: радиоуправляемый.местные ... не удалось!

В последовательности загрузки, в определенный момент, сторожевой демон поддержания запускается, то он стопорится сразу после запуска управляющей программы Барбос. Это странная вещь? Или это нормально? Если wd_keepalive всегда оставаться на, или она должна пойти вниз, когда сторожевой демон поднимается? (Я немного исследовал и, если я правильно понял, то вроде бы нормальные, поэтому я немного запутался)

Это становится бельмом на моей стороне. Что я делаю не так? Может кто-нибудь мне точку в правильном направлении?

Ниже приведен исходный код драйвера

 /** 
 * Драйвер таймера Али Барбос M6117.
*
 * (c) Авторское право 2003 Федерико Барей <[email protected]>,
 * Институт Аргентино де Радио назывался (ИАР).
*
 * Эта программа является свободным программным обеспечением; вы можете распространять и/или
 * модифицировать ее согласно условиям стандартной Общественной лицензии GNU,
 * опубликованной Фондом свободного программного обеспечения; либо версии 2
 * лицензии, либо (по вашему выбору) любой более поздней версии.
 * 
 * Автор не признает ответственности и не дают гарантии на
 * это программное обеспечение. Этот материал предоставляется "как есть" в надежде
 * что может быть полезно для других.
*
 * На основе alim1535_wdt.с Алан Кокс и другие компании wdt несколько
 * авторы...
*
 * Али (Асер лаборатории) M6117 это i386, который имеет сторожевой таймер 
 * встроенный. Барбос использует 32.768 кГц с 24 битами
 * счетчик. Таймер диапазонах от 30.5 U сек до 512 сек
 * разрешение 30.5 у ТРЦ. Когда раз срабатывает таймер; сброс системы,
 * НМИ или IRQ может случиться. Это может быть решено пользователя
 * программирования.
**/

#определить ALI_WDT_VERSION "0.2.0"

#включить модуль <для Linux/.ч>
#включить <ОС Linux/miscdevice.ч>
код #include <linux/для Барбоса.ч>
#включить <АСМ/Ио.ч>
#включить <в asm/uaccess.ч>
код #include <linux и перезагрузки.ч>
код #include <linux/для инициализации.ч>
#включить <ОС Linux/proc_fs.ч>

#определить OUR_NAME "alim6117_wdt"

/* Определения порта: */
#определить M6117_PORT_INDEX 0x22
#определить M6117_PORT_DATA 0x23
/* Да, две неиспользуемые порты 8259:
 * 0020-003f : pic1 
*
 * Контроллер 8259 Беспоко использует четыре порта адреса (в диапазоне от 0x20 до
 * 0x23). Хотя в документации IBM показывает, что эти четыре порта
 * адреса зарезервированы для 8259, только два нижних портов (0х20
 * и 0x21) АР документально как пользоваться программистов. Два порта
 * (И 0x22 0x23) используются только для перепрограммирования 8259 для
 * специальные системы, которые работают в режимах, которые не являются
 * совместим с нормальной IBM для работы ПК (в данном случае).
**/

/* Индекс для Али M6117: */
#определить ALI_LOCK_REGISTER 0x13
#определить ALI_WDT 0x37
#определить ALI_WDT_SELECT 0x38 ошибкой
#определить ALI_WDT_DATA0 0x39
#определить ALI_WDT_DATA1 0x3a
#определить ALI_WDT_DATA2 0x3b
#определить ALI_WDT_CTRL 0x3c

/* Тайм-аут генерирует сигнал выберите: */
#определить WDT_SIGNAL_IRQ3 0х10
#определить WDT_SIGNAL_IRQ4 0х20
#определить WDT_SIGNAL_IRQ5 0x30
#определить WDT_SIGNAL_IRQ6 на 0x40
#определить WDT_SIGNAL_IRQ7 0х50
#определить WDT_SIGNAL_IRQ9 0x60
#определить WDT_SIGNAL_IRQ10 0x70
#определить WDT_SIGNAL_IRQ11 0х80
#определить WDT_SIGNAL_IRQ12 0x90
#определить WDT_SIGNAL_IRQ14 устройства 0xa0
#определить WDT_SIGNAL_IRQ15 0xb0
#определение от 0xC0 WDT_SIGNAL_NMI 
#определить WDT_SIGNAL_SRSET 0xd0
/* установить сигнал, чтобы использовать: */
#определить WDT_SIGNAL WDT_SIGNAL_SRSET

/* ALI_WD_TIME_FACTOR является 1000000/30.5 */
#определить ALI_WD_TIME_FACTOR 32787 /* (от нескольких секунд до Али счетчик) */

статические беззнаковый Long wdt_is_open;
статические Чаре ali_expect_close;
статические инт wdt_run = 0;


статические боол nowayout = WATCHDOG_NOWAYOUT;
module_param(nowayout, боол, 0);
MODULE_PARM_DESC(nowayout, "барбос не может быть после остановки начал "
 "(по умолчанию=" __модуль_строка(WATCHDOG_NOWAYOUT) ")");

статические неподписанных wdt_timeout = 60;
module_param(wdt_timeout, инт, 0);
MODULE_PARM_DESC(wdt_timeout, "начальный тайм-аут сторожевого таймера (в секундах)");


статические инт alim6117_read(индекс инт)
{
 занять сист(индекс, M6117_PORT_INDEX);
 возвращение инб(M6117_PORT_DATA);
}

статический недействительным alim6117_write(индекс инт данных int)
{
 занять сист(индекс, M6117_PORT_INDEX);
 занять сист(сведения, M6117_PORT_DATA);
}

статический недействительным alim6117_ulock_conf_register(ничтожным)
{
 alim6117_write(ALI_LOCK_REGISTER, 0xc5);
}

статический недействительным alim6117_lock_conf_register(ничтожным)
{
 alim6117_write(ALI_LOCK_REGISTER, 0х00);
}

статический недействительным alim6117_set_timeout(интервал времени)
{
 u32 timeout_bits;

 timeout_bits = время * ALI_WD_TIME_FACTOR;
 alim6117_write(ALI_WDT_DATA0, timeout_bits & значение 0xFF);
 alim6117_write(ALI_WDT_DATA1, (timeout_bits & 0xff00) >> 8);
 alim6117_write(ALI_WDT_DATA2, (timeout_bits & значение 0xff0000) >> 16);

возврат;
}

статический недействительным alim6117_wdt_disable(ничтожным)
{
 инт Вэл = alim6117_read(ALI_WDT);

 Вэл &= 0xbf; /* 1011/1111 */
 alim6117_write(ALI_WDT, вал);
}

статический недействительным alim6117_wdt_enable(ничтожным)
{
 инт Вэл = alim6117_read(ALI_WDT);

 Вэл |= от 0x40; /* 0100/0000 */
 alim6117_write(ALI_WDT, вал);
}

статический недействительным alim6117_wdt_signal_select(инт сигнала)
{
 инт Вэл = alim6117_read(ALI_WDT_SELECT);

 Вэл &= 0xf0 в системе;
 вал |= сигнал;
 alim6117_write(ALI_WDT_SELECT, вал);
}

статический недействительным ali_wdt_ping(ничтожным)
{
 инт вал;

 /* если не работает, нет пинга; далее начинаются когда пинг это. */ 
 если (wdt_run) {
alim6117_ulock_conf_register();
 Вэл = alim6117_read(ALI_WDT);
 Вэл &= ~на 0x40; /* 0100/0000 */
 alim6117_write(ALI_WDT, вал);
 Вэл |= от 0x40; /* 0100/0000 */
 alim6117_write(ALI_WDT, вал);
alim6117_lock_conf_register();
/*
 printk(KERN_INFO OUR_NAME ": компания wdt пинг...\Н");
*/
 } еще { 
 printk(KERN_WARNING OUR_NAME ": компания wdt остановился\Н");
}
}

статический недействительным ali_wdt_start(ничтожным)
{
alim6117_ulock_conf_register();
alim6117_wdt_disable();
alim6117_set_timeout(wdt_timeout);
alim6117_wdt_signal_select(WDT_SIGNAL);
alim6117_wdt_enable();
alim6117_lock_conf_register();
 wdt_run = 1;
}

статический недействительным ali_wdt_stop(ничтожным)
{
 инт вал;
 если ( wdt_run ) {
alim6117_ulock_conf_register();
 Вэл = alim6117_read(ALI_WDT);
 Вэл &= ~на 0x40; /* 0100/0000 */
 alim6117_write(ALI_WDT, вал);
alim6117_lock_conf_register();
 wdt_run = 0;
/*
 printk(KERN_INFO OUR_NAME ": wdt не остановить...\Н");
*/
}
}

/**
 * ali_wdt_notify_sys:
 * @это: наш уведомитель блок
 * @код: мероприятия сообщается
 * @неиспользованные: неиспользованный
*
 * Наш уведомитель называется на систему отключения. Мы хотим включить таймер
 * в перезагрузки иначе машина будет снова перезагрузите в памяти
 * тест или еще хуже во время следующей проверки.
*
*/

статические инт ali_wdt_notify_sys(notifier_block структура *этого,
 неподписанный длинный код, пустота *неиспользованный)
{
 если (код == SYS_DOWN || код == SYS_HALT) {
 /* Выключить таймер */
ali_wdt_stop();
}
 возвращение NOTIFY_DONE;
}

/**
 * ali_write - пишет Али Барбоса
 * @файл: файл дескриптор Барбоса
 * @данные: адрес пользователя данных
 * @лен: длина данных
 * @ППОС: указатель на файл, смещение
*
 * Обработать запись в Али Барбоса. Запись на пинги файл 
 * сторожевой таймер и сбрасывает его. Пишу последовательность магии "V", что позволяет
 * следующая закрыть, чтобы выключить сторожевой.
*/

статические определены ali_write(файл struct *файл, const чарса *сведения,
 лен в size_t, loff_t * ППОС)
{
 /* Не могу искать (pwrite) на этом устройстве */
 если (ППОС != &файл->f_pos)
 возвращение -ESPIPE;

 /* Проверяем, если у нас есть волшебный символ 'V' и перезагрузить таймер */
 если (лен) {
 я в size_t;

 ali_expect_close = 0;

 /* проверка, чтобы видеть, ли или не мы получили магический символ */
 для (Я = 0; я != Лен; я++) {
 У8 с;
 если (функция get_user(с, Данные + я))
 возвращение -EFAULT;
 если (с == 'в')
 ali_expect_close = 42;
}
ali_wdt_ping();
 возвращение 1;
}
 возврат 0;
}

/**
 * ali_ioctl - ручка Барбос устройств
 * @дескриптор: дескриптор устройства
 * @файл: файл дескриптора устройства
 * @УМК: команда Барбос 
 * @параметр: указатель аргумент 
*
 * Ручка Барбос устройств, поддерживаемых драйвером Али.
*/

статический длинный ali_ioctl(файл struct *файл,
 беззнаковый инт УМК, беззнаковый Long арг)
{
 инт вариантов;

 статической структуры watchdog_info идент = {
 .параметры = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT,
 .firmware_version = 0,
 .личность = "Али M6117 компании wdt",
};

 переключатель (УМК) {
 дело WDIOC_KEEPALIVE:
ali_wdt_ping();
 возврат 0;
 дело WDIOC_SETTIMEOUT:
 если (функция get_user(параметры (инт *) арг))
 возвращение -EFAULT;
 если (параметры < 1 || функции > 512)
 возвращение -EFAULT;
 wdt_timeout = параметры;
ali_wdt_start();
 дело WDIOC_GETTIMEOUT:
 возвращение put_user осуществляет(wdt_timeout, (инт *) арг);
 дело WDIOC_GETSUPPORT:
 если (основным критерием при
 ((структура watchdog_info *) арг &идент, оператор sizeof(идент)))
 возвращение -EFAULT;
 возврат 0;
 дело WDIOC_GETSTATUS:
 дело WDIOC_GETBOOTSTATUS:
 возвращение put_user осуществляет(0, (инт *) арг);
 дело WDIOC_SETOPTIONS:
 если (функция get_user(параметры (инт *) арг))
 возвращение -EFAULT;
 если (параметры & WDIOS_DISABLECARD) {
ali_wdt_stop();
 возврат 0;
}
 если (параметры & WDIOS_ENABLECARD) {
ali_wdt_start();
 возврат 0;
}
 возвращение -значение einval;

по умолчанию:
 возвращение -ENOTTY;

}
}

/**
 * ali_open - ручка открытия Али Барбоса
 * @дескриптор: дескриптор устройства
 * файл@: дескриптор файла для устройства
*
 * Откройте устройства Али Барбоса. Обеспечить только один человек открывает его
 * на время. Также начать сторожем работает.
*/

статические инт ali_open(структуры объектов inode *inode в, структура файла *файле)
{
 если(test_and_set_bit(0, &wdt_is_open))
 вернуть -EBUSY;
ali_wdt_start();

 возврат 0;
}

/**
 * ali_release - закрыть Али Барбоса
 * @дескриптор: дескриптор от ВФС
 * файл@: файл с ВФС
*
 * Закройте устройство Али Барбоса. Фактическое отключение таймера
 * возникает только в том случае, если последовательность магии была установлена или nowayout это 
 * отключена.
*/

статические инт ali_release(структуры объектов inode *inode в, файл struct *файл)
{
 если (ali_expect_close == 42 && !nowayout) {
ali_wdt_stop();
 } еще {
 printk(KERN_CRIT OUR_NAME
 ": Неожиданное рядом, не останавливаясь Барбос!\Н");
}
 ali_expect_close = 0;
 clear_bit(0, &wdt_is_open);

 возврат 0;
}

статические структуры struct file_operations ali_fops = {
 .владелец = THIS_MODULE,
 .пишите = ali_write,
 .unlocked_ioctl = ali_ioctl,
 .открыть = ali_open,
 .релиз = ali_release,
};

статической структуры miscdevice ali_miscdev = {
 .незначительные = WATCHDOG_MINOR,
 .имя = "сторожевой",
 .фопс = &ali_fops,
};

/*
 * Компании wdt должен узнать о мягкая остановок для того, чтобы превратить
 * бомба замедленного действия регистров выкл.
*/

статической структуры notifier_block ali_notifier = {
 .notifier_call = ali_wdt_notify_sys,
 .следующий = нуль,
 .приоритет = 0
};

статический тип int __alim6117_init инициализации(пустота)
{
 если (wdt_timeout < 1 || wdt_timeout > 512){
 printk(KERN_ERR OUR_NAME
 ": Тайм-аут вне диапазона (0 < wdt_timeout <= 512)\п");
 возвращение -эио;
}

 если (misc_register(&ali_miscdev) != 0) {
 printk(KERN_ERR OUR_NAME
 ": не может зарегистрировать сторожевого узла устройства.\Н");
 возвращение -эио;
}

register_reboot_notifier(&ali_notifier);

 printk(KERN_INFO "водитель компания wdt для Али M6117 в(" 
 ALI_WDT_VERSION ") инициализации.\Н");

 возврат 0;
}

статический недействительным __выход alim6117_exit(пустота)
{
misc_deregister(&ali_miscdev);
unregister_reboot_notifier(&ali_notifier);

 ali_wdt_stop(); /* остановка таймера */
}

module_init(alim6117_init);
module_exit(alim6117_exit);

MODULE_AUTHOR("Федерико Барей <[email protected]>");
MODULE_DESCRIPTION("драйвер для сторожевого таймера в микросхема Али M6117.");
MODULE_LICENSE("GPL В");
MODULE_SUPPORTED_DEVICE("сторожевой");
+51
user467236 18 окт. 2015 г., 07:51:26

Показать вопросы с тегом