Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/src/vm/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 59 kB image not shown  

Quelle  bionic_missing_funcs.cpp   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include <errno.h>        // For EPERM
#include <sys/syscall.h>  // For syscall()
#include <unistd.h>

#include "mozilla/Assertions.h"

extern "C" {

#if defined(__ANDROID_API__) && (__ANDROID_API__ < 24)

// Bionic introduced support for getgrgid_r() and getgrnam_r() only in version
// 24 (that is Android Nougat / 7.0). Since GeckoView is built with version 21,
// those functions aren't defined, but nix needs them and minidump-writer
// relies on nix. These functions should never be called in practice hence we
// implement them only to satisfy nix linking requirements but we crash if we
// accidentally enter them.

int getgrgid_r(gid_t gid, struct group* grp, char* buf, size_t buflen,
               struct group** result) {
  MOZ_CRASH("getgrgid_r() is not available");
  return EPERM;
}

int getgrnam_r(const char* name, struct group* grp, char* buf, size_t buflen,
               struct group** result) {
  MOZ_CRASH("getgrnam_r() is not available");
  return EPERM;
}

#endif  // __ANDROID_API__ && (__ANDROID_API__ < 24)

#if defined(__ANDROID_API__) && (__ANDROID_API__ < 23)

// Bionic introduced support for process_vm_readv() and process_vm_writev() only
// in version 23 (that is Android Marshmallow / 6.0). Since GeckoView is built
// on version 21, those functions aren't defined, but nix needs them and
// minidump-writer actually calls them.

ssize_t process_vm_readv(pid_t pid, const struct iovec* local_iov,
                         unsigned long int liovcnt,
                         const struct iovec* remote_iov,
                         unsigned long int riovcnt, unsigned long int flags) {
  return syscall(__NR_process_vm_readv, pid, local_iov, liovcnt, remote_iov,
                 riovcnt, flags);
}

ssize_t process_vm_writev(pid_t pid, const struct iovec* local_iov,
                          unsigned long int liovcnt,
                          const struct iovec* remote_iov,
                          unsigned long int riovcnt, unsigned long int flags) {
  return syscall(__NR_process_vm_writev, pid, local_iov, liovcnt, remote_iov,
                 riovcnt, flags);
}

#endif  // defined(__ANDROID_API__) && (__ANDROID_API__ < 23)
}

Messung V0.5
C=74 H=100 G=87

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.