cregit-Linux how code gets into the kernel

Release 4.16 drivers/acpi/acpica/psutils.c

/******************************************************************************
 *
 * Module Name: psutils - Parser miscellaneous utilities (Parser only)
 *
 *****************************************************************************/

/*
 * Copyright (C) 2000 - 2018, Intel Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */

#include <acpi/acpi.h>
#include "accommon.h"
#include "acparser.h"
#include "amlcode.h"
#include "acconvert.h"


#define _COMPONENT          ACPI_PARSER
ACPI_MODULE_NAME("psutils")

/*******************************************************************************
 *
 * FUNCTION:    acpi_ps_create_scope_op
 *
 * PARAMETERS:  None
 *
 * RETURN:      A new Scope object, null on failure
 *
 * DESCRIPTION: Create a Scope and associated namepath op with the root name
 *
 ******************************************************************************/

union acpi_parse_object *acpi_ps_create_scope_op(u8 *aml) { union acpi_parse_object *scope_op; scope_op = acpi_ps_alloc_op(AML_SCOPE_OP, aml); if (!scope_op) { return (NULL); } scope_op->named.name = ACPI_ROOT_NAME; return (scope_op); }

Contributors

PersonTokensPropCommitsCommitProp
Andy Grover4590.00%266.67%
Lv Zheng510.00%133.33%
Total50100.00%3100.00%

/******************************************************************************* * * FUNCTION: acpi_ps_init_op * * PARAMETERS: op - A newly allocated Op object * opcode - Opcode to store in the Op * * RETURN: None * * DESCRIPTION: Initialize a parse (Op) object * ******************************************************************************/
void acpi_ps_init_op(union acpi_parse_object *op, u16 opcode) { ACPI_FUNCTION_ENTRY(); op->common.descriptor_type = ACPI_DESC_TYPE_PARSER; op->common.aml_opcode = opcode; ACPI_DISASM_ONLY_MEMBERS(acpi_ut_safe_strncpy(op->common.aml_op_name, (acpi_ps_get_opcode_info (opcode))->name, sizeof(op->common. aml_op_name))); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)3658.06%111.11%
Andy Grover2032.26%444.44%
Linus Torvalds34.84%111.11%
Robert Moore23.23%222.22%
Len Brown11.61%111.11%
Total62100.00%9100.00%

/******************************************************************************* * * FUNCTION: acpi_ps_alloc_op * * PARAMETERS: opcode - Opcode that will be stored in the new Op * aml - Address of the opcode * * RETURN: Pointer to the new Op, null on failure * * DESCRIPTION: Allocate an acpi_op, choose op type (and thus size) based on * opcode. A cache of opcodes is available for the pure * GENERIC_OP, since this is by far the most commonly used. * ******************************************************************************/
union acpi_parse_object *acpi_ps_alloc_op(u16 opcode, u8 *aml) { union acpi_parse_object *op; const struct acpi_opcode_info *op_info; u8 flags = ACPI_PARSEOP_GENERIC; ACPI_FUNCTION_ENTRY(); op_info = acpi_ps_get_opcode_info(opcode); /* Determine type of parse_op required */ if (op_info->flags & AML_DEFER) { flags = ACPI_PARSEOP_DEFERRED; } else if (op_info->flags & AML_NAMED) { flags = ACPI_PARSEOP_NAMED_OBJECT; } else if (opcode == AML_INT_BYTELIST_OP) { flags = ACPI_PARSEOP_BYTELIST; } /* Allocate the minimum required size object */ if (flags == ACPI_PARSEOP_GENERIC) { /* The generic op (default) is by far the most common (16 to 1) */ op = acpi_os_acquire_object(acpi_gbl_ps_node_cache); } else { /* Extended parseop */ op = acpi_os_acquire_object(acpi_gbl_ps_node_ext_cache); } /* Initialize the Op */ if (op) { acpi_ps_init_op(op, opcode); op->common.aml = aml; op->common.flags = flags; ASL_CV_CLEAR_OP_COMMENTS(op); if (opcode == AML_SCOPE_OP) { acpi_gbl_current_scope = op; } if (acpi_gbl_capture_comments) { ASL_CV_TRANSFER_COMMENTS(op); } } return (op); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)7844.83%214.29%
Robert Moore3620.69%428.57%
Linus Torvalds2816.09%214.29%
Lv Zheng126.90%17.14%
Len Brown116.32%17.14%
Andy Grover84.60%321.43%
Colin Ian King10.57%17.14%
Total174100.00%14100.00%

/******************************************************************************* * * FUNCTION: acpi_ps_free_op * * PARAMETERS: op - Op to be freed * * RETURN: None. * * DESCRIPTION: Free an Op object. Either put it on the GENERIC_OP cache list * or actually free it. * ******************************************************************************/
void acpi_ps_free_op(union acpi_parse_object *op) { ACPI_FUNCTION_NAME(ps_free_op); ASL_CV_CLEAR_OP_COMMENTS(op); if (op->common.aml_opcode == AML_INT_RETURN_VALUE_OP) { ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", op)); } if (op->common.flags & ACPI_PARSEOP_GENERIC) { (void)acpi_os_release_object(acpi_gbl_ps_node_cache, op); } else { (void)acpi_os_release_object(acpi_gbl_ps_node_ext_cache, op); } }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)3443.59%214.29%
Linus Torvalds1721.79%214.29%
Robert Moore1620.51%428.57%
Andy Grover1012.82%535.71%
Len Brown11.28%17.14%
Total78100.00%14100.00%

/******************************************************************************* * * FUNCTION: Utility functions * * DESCRIPTION: Low level character and object functions * ******************************************************************************/ /* * Is "c" a namestring lead character? */
u8 acpi_ps_is_leading_char(u32 c) { return ((u8) (c == '_' || (c >= 'A' && c <= 'Z'))); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)2996.67%266.67%
Len Brown13.33%133.33%
Total30100.00%3100.00%

/* * Get op's name (4-byte name segment) or 0 if unnamed */
u32 acpi_ps_get_name(union acpi_parse_object * op) { /* The "generic" object has no name associated with it */ if (op->common.flags & ACPI_PARSEOP_GENERIC) { return (0); } /* Only the "Extended" parse objects have a name */ return (op->named.name); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)1642.11%116.67%
Linus Torvalds1539.47%116.67%
Andy Grover615.79%350.00%
Len Brown12.63%116.67%
Total38100.00%6100.00%

/* * Set op's name */
void acpi_ps_set_name(union acpi_parse_object *op, u32 name) { /* The "generic" object has no name associated with it */ if (op->common.flags & ACPI_PARSEOP_GENERIC) { return; } op->named.name = name; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)1954.29%116.67%
Linus Torvalds925.71%116.67%
Andy Grover617.14%350.00%
Len Brown12.86%116.67%
Total35100.00%6100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)22645.20%26.45%
Andy Grover9719.40%825.81%
Linus Torvalds7515.00%26.45%
Robert Moore6312.60%1341.94%
Len Brown193.80%39.68%
Lv Zheng183.60%13.23%
Patrick Mochel10.20%13.23%
Colin Ian King10.20%13.23%
Total500100.00%31100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.