Units
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/translations/documentation/articleslinux-emulation_index/nb_NO/units/?format=api&page=3
https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/units/?format=api&page=4", "previous": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/units/?format=api&page=2", "results": [ { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "The same goes with the UNIX(R) API. Most programs can live with a very limited set of syscalls working. Those syscalls tend to be the oldest ones (man:read[2]/man:write[2], man:fork[2] family, man:signal[3] handling, man:exit[3], man:socket[2] API) hence it is easy to emulate because their semantics is shared among all UNIX(R)es, which exist todays." ], "previous_source": "", "target": [ "" ], "id_hash": 760708597570888289, "content_hash": 760708597570888289, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:420", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 111, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 52, "source_unit": "https://translate-dev.freebsd.org/api/units/612333/?format=api", "priority": 100, "id": 787816, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=8a8e947067cc6261", "url": "https://translate-dev.freebsd.org/api/units/787816/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.255344Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Emulation" ], "previous_source": "", "target": [ "" ], "id_hash": 5068111918082039090, "content_hash": 5068111918082039090, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:422", "context": "", "note": "type: Title ==", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 112, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380243/?format=api", "priority": 100, "id": 787821, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=c6558cefff341d32", "url": "https://translate-dev.freebsd.org/api/units/787821/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.317397Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "How emulation works in FreeBSD" ], "previous_source": "", "target": [ "" ], "id_hash": -3076149006527228918, "content_hash": -3076149006527228918, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:424", "context": "", "note": "type: Title ===", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 113, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380245/?format=api", "priority": 100, "id": 787824, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=554f52c6d5c6140a", "url": "https://translate-dev.freebsd.org/api/units/787824/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.330909Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "As stated earlier, FreeBSD supports running binaries from several other UNIX(R)es. This works because FreeBSD has an abstraction called the execution class loader. This wedges into the man:execve[2] syscall, so when man:execve[2] is about to execute a binary it examines its type." ], "previous_source": "", "target": [ "" ], "id_hash": 6767841103420010780, "content_hash": 6767841103420010780, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:429", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 114, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 42, "source_unit": "https://translate-dev.freebsd.org/api/units/612335/?format=api", "priority": 100, "id": 787829, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=ddec33a041a3311c", "url": "https://translate-dev.freebsd.org/api/units/787829/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.357381Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "There are basically two types of binaries in FreeBSD. Shell-like text scripts which are identified by `#!` as their first two characters and normal (typically _ELF_) binaries, which are a representation of a compiled executable object. The vast majority (one could say all of them) of binaries in FreeBSD are from type ELF. ELF files contain a header, which specifies the OS ABI for this ELF file. By reading this information, the operating system can accurately determine what type of binary the given file is." ], "previous_source": "", "target": [ "" ], "id_hash": 7964222550709979183, "content_hash": 7964222550709979183, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:435", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 115, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 85, "source_unit": "https://translate-dev.freebsd.org/api/units/612337/?format=api", "priority": 100, "id": 787833, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=ee869a36af39482f", "url": "https://translate-dev.freebsd.org/api/units/787833/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.527616Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Every OS ABI must be registered in the FreeBSD kernel. This applies to the FreeBSD native OS ABI, as well. So when man:execve[2] executes a binary it iterates through the list of registered APIs and when it finds the right one it starts to use the information contained in the OS ABI description (its syscall table, `errno` translation table, etc.). So every time the process calls a syscall, it uses its own set of syscalls instead of some global one. This effectively provides a very elegant and easy way of supporting execution of various binary formats." ], "previous_source": "", "target": [ "" ], "id_hash": -395350263887773258, "content_hash": -395350263887773258, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:441", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 116, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 96, "source_unit": "https://translate-dev.freebsd.org/api/units/612339/?format=api", "priority": 100, "id": 787834, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=7a836f07971cc1b6", "url": "https://translate-dev.freebsd.org/api/units/787834/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.536666Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "The nature of emulation of different OSes (and also some other subsystems) led developers to invite a handler event mechanism. There are various places in the kernel, where a list of event handlers are called. Every subsystem can register an event handler and they are called accordingly. For example, when a process exits there is a handler called that possibly cleans up whatever the subsystem needs to be cleaned." ], "previous_source": "", "target": [ "" ], "id_hash": -779589601339418650, "content_hash": -779589601339418650, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:446", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 117, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 69, "source_unit": "https://translate-dev.freebsd.org/api/units/612341/?format=api", "priority": 100, "id": 787837, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=752e5763559357e6", "url": "https://translate-dev.freebsd.org/api/units/787837/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.640515Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Those simple facilities provide basically everything that is needed for the emulation infrastructure and in fact these are basically the only things necessary to implement the Linux(R) emulation layer." ], "previous_source": "", "target": [ "" ], "id_hash": -5730839877154136347, "content_hash": -5730839877154136347, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:448", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 118, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 29, "source_unit": "https://translate-dev.freebsd.org/api/units/380255/?format=api", "priority": 100, "id": 787847, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=3077f77eb9959ee5", "url": "https://translate-dev.freebsd.org/api/units/787847/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.798936Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Common primitives in the FreeBSD kernel" ], "previous_source": "", "target": [ "" ], "id_hash": -4273340388558647671, "content_hash": -4273340388558647671, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:450", "context": "", "note": "type: Title ===", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 119, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 6, "source_unit": "https://translate-dev.freebsd.org/api/units/380257/?format=api", "priority": 100, "id": 787852, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=44b20b8ec7a1ce89", "url": "https://translate-dev.freebsd.org/api/units/787852/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:09.920697Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Emulation layers need some support from the operating system. I am going to describe some of the supported primitives in the FreeBSD operating system." ], "previous_source": "", "target": [ "" ], "id_hash": 4703453344085690940, "content_hash": 4703453344085690940, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:454", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 120, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 24, "source_unit": "https://translate-dev.freebsd.org/api/units/612343/?format=api", "priority": 100, "id": 787855, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=c14605e57fd9ca3c", "url": "https://translate-dev.freebsd.org/api/units/787855/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.058361Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Locking primitives" ], "previous_source": "", "target": [ "" ], "id_hash": 408425924023565031, "content_hash": 408425924023565031, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:456", "context": "", "note": "type: Title ====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 121, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/380261/?format=api", "priority": 100, "id": 787856, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=85ab0536c67c3ae7", "url": "https://translate-dev.freebsd.org/api/units/787856/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.083614Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Contributed by: `{attilio}`" ], "previous_source": "", "target": [ "" ], "id_hash": -8911628971919295648, "content_hash": -8911628971919295648, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:459", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 122, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 3, "source_unit": "https://translate-dev.freebsd.org/api/units/380263/?format=api", "priority": 100, "id": 787857, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=045388aa76abbb60", "url": "https://translate-dev.freebsd.org/api/units/787857/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.102658Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "The FreeBSD synchronization primitive set is based on the idea to supply a rather huge number of different primitives in a way that the better one can be used for every particular, appropriate situation." ], "previous_source": "", "target": [ "" ], "id_hash": 5914859137339017904, "content_hash": 5914859137339017904, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:461", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 123, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 34, "source_unit": "https://translate-dev.freebsd.org/api/units/380265/?format=api", "priority": 100, "id": 787859, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=d215cd0c1190cab0", "url": "https://translate-dev.freebsd.org/api/units/787859/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.135814Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "To a high level point of view you can consider three kinds of synchronization primitives in the FreeBSD kernel:" ], "previous_source": "", "target": [ "" ], "id_hash": 4386223497983398662, "content_hash": 4386223497983398662, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:463", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 124, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 19, "source_unit": "https://translate-dev.freebsd.org/api/units/380267/?format=api", "priority": 100, "id": 787860, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=bcdeff083ec59306", "url": "https://translate-dev.freebsd.org/api/units/787860/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.153221Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "atomic operations and memory barriers" ], "previous_source": "", "target": [ "" ], "id_hash": 1166133961375624267, "content_hash": 1166133961375624267, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:465", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 125, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380269/?format=api", "priority": 100, "id": 787862, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=902ef0a8d0502c4b", "url": "https://translate-dev.freebsd.org/api/units/787862/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.179958Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "locks" ], "previous_source": "", "target": [ "" ], "id_hash": 1024290492185615707, "content_hash": 1024290492185615707, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:466", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 126, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380271/?format=api", "priority": 100, "id": 787863, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=8e3702c695889d5b", "url": "https://translate-dev.freebsd.org/api/units/787863/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.194851Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "scheduling barriers" ], "previous_source": "", "target": [ "" ], "id_hash": -5083647819440679008, "content_hash": -5083647819440679008, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:467", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 127, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/380273/?format=api", "priority": 100, "id": 787865, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=3973413e170c97a0", "url": "https://translate-dev.freebsd.org/api/units/787865/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.230661Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Below there are descriptions for the 3 families. For every lock, you should really check the linked manpage (where possible) for more detailed explanations." ], "previous_source": "", "target": [ "" ], "id_hash": -8711501567611781111, "content_hash": -8711501567611781111, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:470", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 128, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 24, "source_unit": "https://translate-dev.freebsd.org/api/units/612345/?format=api", "priority": 100, "id": 787867, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=071a877ad23dc009", "url": "https://translate-dev.freebsd.org/api/units/787867/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.307718Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Atomic operations and memory barriers" ], "previous_source": "", "target": [ "" ], "id_hash": -8932650857880175, "content_hash": -8932650857880175, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:472", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 129, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380277/?format=api", "priority": 100, "id": 787871, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=7fe043cd26b6a591", "url": "https://translate-dev.freebsd.org/api/units/787871/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.360941Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Atomic operations are implemented through a set of functions performing simple arithmetics on memory operands in an atomic way with respect to external events (interrupts, preemption, etc.). Atomic operations can guarantee atomicity just on small data types (in the magnitude order of the `.long.` architecture C data type), so should be rarely used directly in the end-level code, if not only for very simple operations (like flag setting in a bitmap, for example). In fact, it is rather simple and common to write down a wrong semantic based on just atomic operations (usually referred as lock-less). The FreeBSD kernel offers a way to perform atomic operations in conjunction with a memory barrier. The memory barriers will guarantee that an atomic operation will happen following some specified ordering with respect to other memory accesses. For example, if we need that an atomic operation happen just after all other pending writes (in terms of instructions reordering buffers activities) are completed, we need to explicitly use a memory barrier in conjunction to this atomic operation. So it is simple to understand why memory barriers play a key role for higher-level locks building (just as refcounts, mutexes, etc.). For a detailed explanatory on atomic operations, please refer to man:atomic[9]. It is far, however, noting that atomic operations (and memory barriers as well) should ideally only be used for building front-ending locks (as mutexes)." ], "previous_source": "", "target": [ "" ], "id_hash": -7767704394604442841, "content_hash": -7767704394604442841, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:483", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 130, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 229, "source_unit": "https://translate-dev.freebsd.org/api/units/612347/?format=api", "priority": 100, "id": 787875, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=14339202175c8b27", "url": "https://translate-dev.freebsd.org/api/units/787875/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.398027Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Refcounts" ], "previous_source": "", "target": [ "" ], "id_hash": 1474105584341097648, "content_hash": 1474105584341097648, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:485", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 131, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380281/?format=api", "priority": 100, "id": 787876, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=9475133804121cb0", "url": "https://translate-dev.freebsd.org/api/units/787876/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.409502Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Refcounts are interfaces for handling reference counters. They are implemented through atomic operations and are intended to be used just for cases, where the reference counter is the only one thing to be protected, so even something like a spin-mutex is deprecated. Using the refcount interface for structures, where a mutex is already used is often wrong since we should probably close the reference counter in some already protected paths. A manpage discussing refcount does not exist currently, just check [.filename]#sys/refcount.h# for an overview of the existing API." ], "previous_source": "", "target": [ "" ], "id_hash": 6981940657135518225, "content_hash": 6981940657135518225, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:491", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 132, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 88, "source_unit": "https://translate-dev.freebsd.org/api/units/612349/?format=api", "priority": 100, "id": 787877, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=e0e4d609276b8211", "url": "https://translate-dev.freebsd.org/api/units/787877/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.423560Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Locks" ], "previous_source": "", "target": [ "" ], "id_hash": -8723919511929475541, "content_hash": -8723919511929475541, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:493", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 133, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380285/?format=api", "priority": 100, "id": 787878, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=06ee696cda582e2b", "url": "https://translate-dev.freebsd.org/api/units/787878/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.437642Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "FreeBSD kernel has huge classes of locks. Every lock is defined by some peculiar properties, but probably the most important is the event linked to contesting holders (or in other terms, the behavior of threads unable to acquire the lock). FreeBSD's locking scheme presents three different behaviors for contenders:" ], "previous_source": "", "target": [ "" ], "id_hash": -4894495908906518338, "content_hash": -4894495908906518338, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:498", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 134, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 49, "source_unit": "https://translate-dev.freebsd.org/api/units/612351/?format=api", "priority": 100, "id": 787881, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=3c1341e72b0638be", "url": "https://translate-dev.freebsd.org/api/units/787881/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.495786Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "spinning" ], "previous_source": "", "target": [ "" ], "id_hash": -7961086403949338287, "content_hash": -7961086403949338287, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:500", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 135, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380289/?format=api", "priority": 100, "id": 787884, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=11848a1862686151", "url": "https://translate-dev.freebsd.org/api/units/787884/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.589062Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "blocking" ], "previous_source": "", "target": [ "" ], "id_hash": 8333502464607622695, "content_hash": 8333502464607622695, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:501", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 136, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380291/?format=api", "priority": 100, "id": 787886, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=f3a68c56b9c79627", "url": "https://translate-dev.freebsd.org/api/units/787886/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.638292Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sleeping" ], "previous_source": "", "target": [ "" ], "id_hash": -7651554324314392538, "content_hash": -7651554324314392538, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:502", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 137, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380293/?format=api", "priority": 100, "id": 787887, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=15d037e1b7a2f826", "url": "https://translate-dev.freebsd.org/api/units/787887/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.661227Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "numbers are not casual" ], "previous_source": "", "target": [ "" ], "id_hash": 6235557811434613806, "content_hash": 6235557811434613806, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:506", "context": "", "note": "type: delimited block = 4", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 138, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 4, "source_unit": "https://translate-dev.freebsd.org/api/units/380295/?format=api", "priority": 100, "id": 787893, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=d68926cac6f8ec2e", "url": "https://translate-dev.freebsd.org/api/units/787893/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.805064Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Spinning locks" ], "previous_source": "", "target": [ "" ], "id_hash": -1388035840497313960, "content_hash": -1388035840497313960, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:509", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 139, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/380297/?format=api", "priority": 100, "id": 787896, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=6cbcb4c1d7a59758", "url": "https://translate-dev.freebsd.org/api/units/787896/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.904566Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Spin locks let waiters to spin until they cannot acquire the lock. An important matter do deal with is when a thread contests on a spin lock if it is not descheduled. Since the FreeBSD kernel is preemptive, this exposes spin lock at the risk of deadlocks that can be solved just disabling interrupts while they are acquired. For this and other reasons (like lack of priority propagation support, poorness in load balancing schemes between CPUs, etc.), spin locks are intended to protect very small paths of code, or ideally not to be used at all if not explicitly requested (explained later)." ], "previous_source": "", "target": [ "" ], "id_hash": -528423516757435745, "content_hash": -528423516757435745, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:515", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 140, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 102, "source_unit": "https://translate-dev.freebsd.org/api/units/612353/?format=api", "priority": 100, "id": 787900, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=78aaa99c78b5da9f", "url": "https://translate-dev.freebsd.org/api/units/787900/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.948551Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Blocking" ], "previous_source": "", "target": [ "" ], "id_hash": -4044068057258367850, "content_hash": -4044068057258367850, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:517", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 141, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380301/?format=api", "priority": 100, "id": 787905, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=47e095873f9c6496", "url": "https://translate-dev.freebsd.org/api/units/787905/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:10.997829Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Sleeping" ], "previous_source": "", "target": [ "" ], "id_hash": -7942088895251542511, "content_hash": -7942088895251542511, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:524", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 143, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380305/?format=api", "priority": 100, "id": 787910, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=11c8083a8ff50e11", "url": "https://translate-dev.freebsd.org/api/units/787910/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.061988Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Sleep locks let waiters to be descheduled and fall asleep until the lock holder does not drop it and wakes up one or more waiters. Since sleep locks are intended to protect large paths of code and to cater asynchronous events, they do not do any form of priority propagation. They must be implemented through the man:sleepqueue[9] interface." ], "previous_source": "", "target": [ "" ], "id_hash": -8278161142777026354, "content_hash": -8278161142777026354, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:529", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 144, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 58, "source_unit": "https://translate-dev.freebsd.org/api/units/612357/?format=api", "priority": 100, "id": 787913, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=0d1e104cdb5568ce", "url": "https://translate-dev.freebsd.org/api/units/787913/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.106020Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "The order used to acquire locks is very important, not only for the possibility to deadlock due at lock order reversals, but even because lock acquisition should follow specific rules linked to locks natures. If you give a look at the table above, the practical rule is that if a thread holds a lock of level n (where the level is the number listed close to the kind of lock) it is not allowed to acquire a lock of superior levels, since this would break the specified semantic for a path. For example, if a thread holds a block lock (level 2), it is allowed to acquire a spin lock (level 1) but not a sleep lock (level 3), since block locks are intended to protect smaller paths than sleep lock (these rules are not about atomic operations or scheduling barriers, however)." ], "previous_source": "", "target": [ "" ], "id_hash": 4274203117560914780, "content_hash": 4274203117560914780, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:533", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 145, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 142, "source_unit": "https://translate-dev.freebsd.org/api/units/612359/?format=api", "priority": 100, "id": 787916, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=bb510516f815e35c", "url": "https://translate-dev.freebsd.org/api/units/787916/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.141142Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "This is a list of lock with their respective behaviors:" ], "previous_source": "", "target": [ "" ], "id_hash": 4511349752506426902, "content_hash": 4511349752506426902, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:535", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 146, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 10, "source_unit": "https://translate-dev.freebsd.org/api/units/380311/?format=api", "priority": 100, "id": 787920, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=be9b88b29fb12616", "url": "https://translate-dev.freebsd.org/api/units/787920/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.202725Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "spin mutex - spinning - man:mutex[9]" ], "previous_source": "", "target": [ "" ], "id_hash": -7635125032725461095, "content_hash": -7635125032725461095, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:537", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 147, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 6, "source_unit": "https://translate-dev.freebsd.org/api/units/380313/?format=api", "priority": 100, "id": 787923, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=160a963c40b4c799", "url": "https://translate-dev.freebsd.org/api/units/787923/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.228690Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sleep mutex - blocking - man:mutex[9]" ], "previous_source": "", "target": [ "" ], "id_hash": 9124517545716684670, "content_hash": 9124517545716684670, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:538", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 148, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 6, "source_unit": "https://translate-dev.freebsd.org/api/units/380315/?format=api", "priority": 100, "id": 787926, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=fea0cc5d3343177e", "url": "https://translate-dev.freebsd.org/api/units/787926/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.255285Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "pool mutex - blocking - man:mtx[pool]" ], "previous_source": "", "target": [ "" ], "id_hash": -4641429618308667934, "content_hash": -4641429618308667934, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:539", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 149, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 6, "source_unit": "https://translate-dev.freebsd.org/api/units/380317/?format=api", "priority": 100, "id": 787927, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=3f96545a7ebc25e2", "url": "https://translate-dev.freebsd.org/api/units/787927/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.277759Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sleep family - sleeping - man:sleep[9] pause tsleep msleep msleep spin msleep rw msleep sx" ], "previous_source": "", "target": [ "" ], "id_hash": -1138827010727312549, "content_hash": -1138827010727312549, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:540", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 150, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 15, "source_unit": "https://translate-dev.freebsd.org/api/units/380319/?format=api", "priority": 100, "id": 787928, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=703212de14fa835b", "url": "https://translate-dev.freebsd.org/api/units/787928/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.292353Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "condvar - sleeping - man:condvar[9]" ], "previous_source": "", "target": [ "" ], "id_hash": -8294894045432915177, "content_hash": -8294894045432915177, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:541", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 151, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380321/?format=api", "priority": 100, "id": 787929, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=0ce29dd05c77db17", "url": "https://translate-dev.freebsd.org/api/units/787929/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.314355Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "rwlock - blocking - man:rwlock[9]" ], "previous_source": "", "target": [ "" ], "id_hash": 3472703386312266604, "content_hash": 3472703386312266604, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:542", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 152, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380323/?format=api", "priority": 100, "id": 787930, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=b0318554a770536c", "url": "https://translate-dev.freebsd.org/api/units/787930/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.333640Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sxlock - sleeping - man:sx[9]" ], "previous_source": "", "target": [ "" ], "id_hash": 5766190761735994055, "content_hash": 5766190761735994055, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:543", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 153, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380325/?format=api", "priority": 100, "id": 787934, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=d0059ff27c69bac7", "url": "https://translate-dev.freebsd.org/api/units/787934/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.378819Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "lockmgr - sleeping - man:lockmgr[9]" ], "previous_source": "", "target": [ "" ], "id_hash": 8307808193529634330, "content_hash": 8307808193529634330, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:544", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 154, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380327/?format=api", "priority": 100, "id": 787940, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=f34b43890d69de1a", "url": "https://translate-dev.freebsd.org/api/units/787940/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.541715Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "semaphores - sleeping - man:sema[9]" ], "previous_source": "", "target": [ "" ], "id_hash": 6823836461342116387, "content_hash": 6823836461342116387, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:545", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 155, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 5, "source_unit": "https://translate-dev.freebsd.org/api/units/380329/?format=api", "priority": 100, "id": 787945, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=deb3231b7ba7ca23", "url": "https://translate-dev.freebsd.org/api/units/787945/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.596959Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Among these locks only mutexes, sxlocks, rwlocks and lockmgrs are intended to handle recursion, but currently recursion is only supported by mutexes and lockmgrs." ], "previous_source": "", "target": [ "" ], "id_hash": -8156981502300583946, "content_hash": -8156981502300583946, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:547", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 156, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 24, "source_unit": "https://translate-dev.freebsd.org/api/units/380331/?format=api", "priority": 100, "id": 787948, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=0ecc948a8bf107f6", "url": "https://translate-dev.freebsd.org/api/units/787948/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.637918Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Scheduling barriers" ], "previous_source": "", "target": [ "" ], "id_hash": -1969377339245918545, "content_hash": -1969377339245918545, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:549", "context": "", "note": "type: Title =====", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 157, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 2, "source_unit": "https://translate-dev.freebsd.org/api/units/380333/?format=api", "priority": 100, "id": 787950, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=64ab5dbe818b06af", "url": "https://translate-dev.freebsd.org/api/units/787950/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.686819Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "critical sections (and preemption)" ], "previous_source": "", "target": [ "" ], "id_hash": -2110670840391614742, "content_hash": -2110670840391614742, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:555", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 159, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 4, "source_unit": "https://translate-dev.freebsd.org/api/units/380337/?format=api", "priority": 100, "id": 787957, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=62b5640db0aebeea", "url": "https://translate-dev.freebsd.org/api/units/787957/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.744997Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sched_bind" ], "previous_source": "", "target": [ "" ], "id_hash": -7295949482855070271, "content_hash": -7295949482855070271, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:556", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 160, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380339/?format=api", "priority": 100, "id": 787961, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=1abf9499d73a85c1", "url": "https://translate-dev.freebsd.org/api/units/787961/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.843440Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "sched_pin" ], "previous_source": "", "target": [ "" ], "id_hash": -5242048873760813891, "content_hash": -5242048873760813891, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:557", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 161, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/380341/?format=api", "priority": 100, "id": 787964, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=37408052a8400cbd", "url": "https://translate-dev.freebsd.org/api/units/787964/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.862096Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articleslinux-emulation_index/nb_NO/?format=api", "source": [ "Generally, these should be used only in a particular context and even if they can often replace locks, they should be avoided because they do not let the diagnose of simple eventual problems with locking debugging tools (as man:witness[4])." ], "previous_source": "", "target": [ "" ], "id_hash": -2061032587203150117, "content_hash": -2061032587203150117, "location": "documentation/content/en/articles/linux-emulation/_index.adoc:559", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 162, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 39, "source_unit": "https://translate-dev.freebsd.org/api/units/380343/?format=api", "priority": 100, "id": 787967, "web_url": "https://translate-dev.freebsd.org/translate/documentation/articleslinux-emulation_index/nb_NO/?checksum=6365bdc821407edb", "url": "https://translate-dev.freebsd.org/api/units/787967/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2021-04-04T22:25:11.902300Z" } ] }{ "count": 396, "next": "