Мобильность ссылок дескриптора файла

В последнем Меза-выпуске, Мезаструктура 9.0, драйвер Radeon поддерживает только GLSL 1.20. Обновление драйвера не решит Вашу проблему.

Необходимо заменить драйвер Radeon с открытым исходным кодом собственным, который должен поддерживать самую высокую версию GLSL, к которой аппаратные средства способны.

20
13.04.2017, 15:36
2 ответа
[1126964]/proc/[1127453]/proc/[1127732]PID[1127733]/fd/[1127734]NUM[12178]symlinks являются квази-универсальными на Linux, но их больше нигде нет (кроме Cygwin, который их эмулирует). [1127455]/proc/[1127736]PID[1127737]/fd/[1127738]NUM[12179]также существуют на AIX и Solaris, но они не являются симлинками. Для получения информации об открытых файлах установите [1127457]lsof[1127458]. [12180]Единицы с [1127459]/proc/[1127740]PID[1127741]/fd[12181]Linux[12182] под Linux, [1127463]/proc/[1127742]PID[1127743]/fd/[1127744]NUM[12183]- это слегка магическая символическая связь с файлом, которую процесс с ID [1127465]PID[1127466] открыл на дескрипторе файла [1127467]NUM[1127468]. Эта связь является магической в том, что, например, она может быть использована для доступа к файлу, даже если он удален. Ссылка будет отслеживать файл и через переименование. [1127469]/proc/self[1127470] - это магическая символическая связь, которая указывает на [1127471]/proc/[1127746]PID[12184], где [1127473]PID[1127474] - это процесс, который получает доступ к ссылке.[12185]Эта возможность присутствует практически на всех Linux системах. Она предоставляется драйвером для файловой системы [1127475]proc[1127476], которая технически необязательна, но используется для стольких вещей (в том числе для работы [1127477]ps[1127478] - она читается из [1127479]/proc/[1127748]PID[12186]), что почти никогда не остаётся без внимания даже на встроенных системах. [12187]Cygwin[12188]Cygwin эмулирует Linux's [1127481]/proc/[1127750]PID[1127751]/fd/[1127752]NUM[12189](для процессов Cygwin) и [1127483]/proc/self[1127484].[12190]Solaris[1127486] (начиная с версии 2. 6), [1127487]AIX[12191]Для каждого дескриптора файла есть [1127489]/proc/[1127754]PID[1127755]/fd[1127490] записи, но они имеют тот же тип, что и открытый файл, поэтому не предоставляют никакой информации о пути к файлу. Однако они сообщают ту же информацию [12192]stat[12193], что и [12194]fstat[12195], который сообщает процессу, в котором файл открыт, поэтому можно определить, на какой файловой системе находится файл и его номер в коде. Директории выглядят как символические ссылки, однако это магические симлинки, по которым можно только следовать, а [1127495]readlink[1127496] возвращает пустую строку.[12196]В AIX команда [12197]procfiles[12198]отображает некоторую информацию об открытых файлах процесса. В Solaris команда [12199]pfiles[12200] отображает некоторую информацию об открытых файлах процесса. Сюда не входит путь к файлу (в Solaris это происходит с Solaris 10, см. ниже).[12201]Solaris[1127502] (с [1127503]версии 10[1127504])[12202]В дополнение к [1127505]/proc/[1127764]PID[1127765]/fd/[1127766]NUM[12203], современные версии Solaris имеют [1127507]/proc/[1127768]PID[1127769]/path/[1127770]NUM[12204], который содержит символические ссылки, аналогичные симлинкам Linux в [1127509]/proc/[1127772]PID[1127773]/fd/[1127774]NUM[12205]. Команда [12206]pfiles[12207]показывает информацию об открытых файлах процесса, включая пути.[12208]Plan9[12209]/proc/[1127778]PID[1127779]/fd[1127516] представляет собой текстовый файл, который содержит по одной записи (строке) на дескриптор файла, открытый процессом. Имя файла там не отслеживается.[12210]QNX[12211]/proc/[1127780]PID[1127781]/[1127520] является директорией, но не содержит информации о файловых дескрипторах. Единицы с [1127521]/proc[1127522], но без прямого доступа к файловым дескрипторам[12213](Замечание: иногда можно получить информацию об открытых файлах процесса путем риффлинга через его образ памяти, который доступен по ссылке [1127523]/proc[1127524]. Я не считаю это "прямым доступом")[12214]Единицы, где [1127525]/proc/[1127782]PID[12215]- это файл [12216]Сама файловая система proc [1127527]была запущена[1127528] в UNIX 8-ом издании, но с другой структурой, и прошла через Plan 9 и обратно в некоторые унисоры. Я думаю, что все операционные системы с [1127529]/proc[1127530] имеют запись для каждого PID, но на многих системах это обычный файл, а не каталог. Следующие системы имеют [1127531]/proc/[1127784]PID[12217], который нужно читать с помощью [1127533]ioctl[1127534]:[12218]Solaris до [1127786]2.5[12219]OSF/1, теперь известный как [1127788]Tru64[12220]IRIX (? )[12221]SCO (?)[12222]MINIX 3[12223]MINIX 3 имеет [1127545]procfs сервер [1127546], который предоставляет несколько Linux-подобных компонентов, включая [1127547]/proc/[1127790]PID[1127791]/[1127548] каталоги. Однако здесь нет [1127549]/proc/[1127792]PID[1127793]/fd[1127550].[12224]FreeBSD[12225]FreeBSD имеет [1127553]/proc/[1127794]PID[1127795]/[1127554] каталоги, но они не предоставляют информацию об открытых файловых дескрипторах. (Однако существует [1127555]/proc/[1127796]PID[1127797]/file[1127556], который похож на [1127557]/proc/[1127798]PID[1127799]/exe[1127558], дающий доступ к исполняемому файлу по символической ссылке)[12226]Прокси-сервер FreeBSD имеет [1127559]deprecated[1127560]. [12227]Единицы без [1127561]/proc[12228]HP-UX[12229]OpenBSD[12230]NetBSD[12231]Mac OS X[12232]Информация о дескрипторах файлов по другим каналам[12233]Fuser[12234]Команда [12235]fuser[12236]перечисляет процессы, в которых открыт указанный файл, или файл, открытый в указанной точке монтирования. Эта команда является стандартной (доступна на всех [1127575]XSI[1127576]-совместимых системах, т.е. POSIX с расширением системного интерфейса X/Open).[12237]С помощью этой утилиты нельзя переходить от процесса к имени файла.[12238]Lsof[12239]Lsof означает "список открытых файлов". Это утилита [1127579]стороннего производителя[1127580], доступная (но обычно не входящая в установку по умолчанию) для большинства unix-вариантов. Получение информации об открытых файлах очень зависит от системы, так как приведенный выше анализ мог вызвать у вас подозрения. Мантейнер lsof проделал работу по объединению всего этого под одним интерфейсом.[12240]Вы можете прочитать [1127581]FAQ[1127582], чтобы узнать, с какими трудностями приходится мириться lsof. На большинстве юнисов получение информации об именах открытых файлов требует разбора структур данных ядра. Цитата из FAQ 3.3 "Почему lsof не сообщает полные имена путей":[12241]Lsof не может получить компоненты с именами путей из кэшей имен ядра следующих диалектов:[12242]AIX[12243]Только ядро Linux записывает полные имена путей в структуры, которые оно поддерживает об открытых файлах; вместо этого большинство ядра преобразовывают имена путей в дублеты номеров устройств и узлов и используют их для последующих ссылок на файлы после открытия файлов. [12244]Если вам нужно разобрать информацию из вывода [1127589]lsof[1127590], обязательно используйте режим [1127591]-F[1127592] (по одному полю на строку), желательно режим [1127593]-F0[1127594] (поля с нулевым делением). Для получения информации о дескрипторе конкретного файла процесса используйте опцию [1127595]-a[1127596] с [1127597]-p [1127804]PID[12245] и [1127599]-d [1127806]NUM[12246], например, [1127601]lsof -a -p 123 -d 0 -F0n[1127602]. [12247]/dev/fd/[1127808]NUM[12248]для файловых дескрипторов текущего процесса[12249]Многие unix-варианты предоставляют возможность процессу получить доступ к своим открытым файлам через имя файла: открытие [1127605]/dev/fd/[1127810]NUM[12250]эквивалентно вызову [12251]dup([1127872]NUM[1127873])[12252]. Эти имена полезны, когда программе нужно имя файла, но вы хотите передать уже открытый файл (например, трубку или сокет); например, оболочки, реализующие подстановку процесса [1127609], используют их там, где это возможно (используя временную именованную трубку, где [1127611]/dev/fd[1127612] недоступен). [12253] Там, где существует [1127613]/dev/fd[1127614], также обычно (всегда?) существуют синонимы (иногда символические ссылки, иногда жесткие ссылки, иногда магические файлы с эквивалентными свойствами). [1127615]/dev/stdin[1127616] = [1127617]/dev/fd/0[1127618], [1127619]/dev/stdout[1127620] = [1127621]/dev/fd/1[1127622], [1127623]/dev/stderr[1127624] = [1127625]/dev/fd/2[1127626]. Под Linux [12254]/dev/fd[1127815] является символической ссылкой на [1127816]/proc/self/fd[1127817]. В большинстве униксов ([1127818]IRIX[1127819], [1127820]OpenBSD[1127821], [1127822]NetBSD[1127823], SCO, [1127824]Solaris[1127825], ...), записи в [1127826]/dev/fd[1127827] являются символьными устройствами. Обычно они появляются независимо от того, открыт файловый дескриптор или нет, и записи могут быть недоступны для файловых дескрипторов выше определенного числа.[12256]В FreeBSD и OSX файловая система [1127828]fdescfs[1127829] предоставляет динамическую директорию [1127830]/dev/fd[1127831], которая следует за открытыми дескрипторами вызывающего процесса. Статическая [1127832]/dev/fd[1127833] доступна в том случае, если [1127834]/dev/fd[1127835] не смонтирован. [12257]В OSF/1 (Tru64) [1127836]/dev/fd[1127837] доступен через [1127838]fdfs[1127839].[12258]На AIX или HP-UX нет [1127840]/dev/fd[1127841].[12259]
27
27.01.2020, 19:44
[1126660] Способ реализации [1127117]/proc[1127118] и предоставляемые им возможности никак не стандартизированы, см., например, [1127119] здесь [1127120]. Согласно Википедии, FreeBSD "постепенно сворачивается" [1127121]/proc[1127122], подробности см. в [1127123] здесь[1127124] .

  • Начиная с [1127125]/dev[1127126], [1127127]/dev/fd/[1127128] не является частью POSIX или Спецификации одного пользователя (SUSv3), в то время как System V и BSD поддерживают её.

  • Addendum:

  • Linux: [1127129]/dev/fd/*[1127130] являются сим-ссылками на [1127131]/proc/self/fd[1127132].

  • FreeBSD: [1127133]/dev/fd/*[1127134] предоставляется через fdescfs.

    NetBSD: также как и FreeBSD.

  • OpenBSD: также как и FreeBSD.

    iPod══╗   ┌────────────┐
          ╚═══╡            │
    iPad══════╡ TL-WR340GD ╞═══University Internet
          ╔═══╡            │
     PC═══╝   └────────────┘
    
    Solaris: имеет [1127135]/dev/fd/*[1127136].

    IRIX: имеет [1127137]/dev/fd/*[1127138].

    Tru64 Unix: имеет [1127139]/dev/fd/*[1127140] согласно [1127141]nixdoc.net[1127142], подлинная документация по Tru64 в HP является непостижимой (мальчик, какой беспорядок! ты ничего не найдешь!).

    Look

    AIX: никаких признаков, найденных в общедоступной документации.

    HP-UX: то же самое, что и AIX.[1126683].
    9
    27.01.2020, 19:44

    Теги

    Похожие вопросы