text:
Course Contents at a Glance
Faculty Resources Overview
Question Banks
Resources: Course Assignments
Assignment: Foundations of Psychology
Assignment: Research in Psychology
Assignment: Biopsychology
Assignment: Sleep and Dream Journal
Assignment: Perception and Food
Assignment: Perception and Illusions
Assignment: Thinking and Intelligence
Assignment: Thinking and Intelligence—The Paradox of Choice
Assignment: Memory
Assignment: Learning
Assignment: Lifespan Development
Assignment: Social Psychology
Assignment: Personality
Assignment: Personality—Blirtatiousness
Assignment: Motivation and Emotion
Assignment: Growth Mindsets and the Control Condition
Assignment: Industrial-Organizational Psychology
Assignment: Psychological Disorders
Assignment: Therapy and Treatment
Assignment: Stress, Lifestyle, and Health
Psychological Foundations
Why It Matters: Psychological Foundations
Introduction to The History of Psychology
Early Psychology—Structuralism and Functionalism
The History of Psychology—Psychoanalytic Theory and Gestalt Psychology
The History of Psychology—Behaviorism and Humanism
The History of Psychology—The Cognitive Revolution and Multicultural Psychology
Introduction to Contemporary Fields in Psychology
The Five Psychological Domains
The Biological Domain
The Cognitive Domain
The Developmental Domain
The Social and Personality Psychology Domain
The Mental and Physical Health Domain
Other Psychological Subfields
Introduction to Careers in Psychology
Merits of an Education in Psychology
Careers in Psychology
Putting It Together: Psychological Foundations
Discussion: Foundations of Psychology
Psychological Research
Why It Matters: Psychological Research
Introduction to The Scientific Method
Introduction to Approaches to Research
Descriptive Research
Other Types of Descriptive Research
Correlational Research
Introduction to Statistical Thinking
The Reliability and Validity of Research
Statistical Significance
Drawing Conclusions from Statistics
How to Read Research
Psych in Real Life: Brain Imaging and Messy Science
Putting It Together: Psychological Research
Discussion: Research in Psychology
Biopsychology
Introduction to Neural Communication
How Neurons Communicate
Introduction to The Nervous System and the Endocrine System
Parts of the Nervous System
Introduction to the Parts of the Brain
Brain Hemispheres
Lobes of the Brain
The Limbic System and Other Brain Areas
Brain Imaging
Introduction to Nature and Nurture
The Nature-Nurture Question
Gene-Environment Interactions
Putting It Together: Biopsychology
Discussion: Biopsychology
States of Consciousness
Why It Matters: States of Consciousness
Introduction to Consciousness and Rhythms
Consciousness and Biological Rhythms
Psych in Real Life: Consciousness and Blindsight
When Biological Clocks Get Disrupted
Introduction to Sleep and Dreams
Sleep and Why We Sleep
Dreams and Dreaming
Introduction to Drugs and Other States of Consciousness
Psychoactive Drugs and Addiction
Alcohol and Other Depressants
Hypnosis and Meditation
Putting It Together: States of Consciousness
Discussion: States of Consciousness
Why It Matters: Sensation and Perception
Introduction to Sensation and Perception
What is Sensation?
What is Perception?
Introduction to Vision
How We See
Color and Depth Perception
Introduction to Hearing
How We Hear
Pitch Perception and Hearing Loss
Introduction to Other Senses
Taste and Smell
Touch and Pain
The Vestibular Sense
Introduction to Perception
Gestalt Principles of Perception
Multi-Modal Perception
Psych in Real Life: Illusions
Putting It Together: Sensation and Perception
Discussion: Sensation and Perception
Thinking and Intelligence
Why It Matters: Thinking and Intelligence
Introduction to Thinking and Problem-Solving
What Is Cognition?
Pitfalls to Problem Solving
Psych in Real Life: Choice Blindness
Introduction to Language
Language and Thinking
Introduction to Intelligence and Creativity
What Is Intelligence?
Measures of Intelligence
The Source of Intelligence
Putting It Together: Thinking and Intelligence
Discussion: Thinking and Intelligence
Why It Matters: Memory
Introduction to How Memory Functions
Parts of the Brain Involved with Memory
Introduction to Forgetting and Other Memory Problems
Eyewitness Testimony and Memory Construction
Introduction to Improving Memory
Ways to Enhance Memory
Putting It Together: Memory
Discussion: Memory
Why It Matters: Learning
Introduction to Classical Conditioning
Classical Conditioning
Processes in Classical Conditioning
Introduction to Operant Conditioning
Operant Conditioning
Reinforcement and Punishment
Reinforcement Schedules
Introduction to Other Types of Learning
Latent Learning
Psych in Real Life: Latent Learning
Psych in Real Life: The Bobo Doll Experiment
Putting It Together: Learning
Discussion: Learning
Lifespan Development
Why It Matters: Introduction to Lifespan Development
Introduction to Theories of Development
What Is Lifespan Development?
Psychosexual and Psychosocial Theories of Development
Moral Development
Psych in Real Life: Moral Reasoning
Introduction to Stages of Development in Childhood
Childhood: Physical and Cognitive Development
Childhood: Emotional and Social Development
Introduction to Development in Adolescence and Adulthood
Putting It Together: Lifespan Development
Discussion: Lifespan Development
Why It Matters: Social Psychology
Introduction to Social Psychology and Self-Presentation
Social Psychology and Influences on Behavior
Social Norms and Scripts
Introduction to Attitudes and Persuasion
Introduction to Group Behavior
Conformity and Obedience
The Bystander Effect and Altruism
Attraction and Love
Psych in Real Life: Love and Pain
Introduction to Prejudice, Discrimination, and Aggression
Prejudice and Discrimination
Why do Prejudice and Discrimination Exist?
Putting It Together: Social Psychology
Discussion: Social Psychology
Why It Matters: Personality
Introduction to Psychodynamic Approaches to Personality
What Is Personality?
Freud and the Psychodynamic Perspective
Neo-Freudians: Adler, Erikson, Jung, and Horney
Introduction to Explaining Personality
Learning Approaches
Humanistic Approaches
Biological Approaches
Trait Theorists
Cultural Understandings of Personality
Introduction to Measuring Personality
Personality Assessment
Psych in Real Life: Blirtatiousness, Questionnaires, and Validity
Resource: Personality Tests
Putting It Together: Personality
Discussion: Personality
Emotion and Motivation
Why It Matters: Emotion and Motivation
Introduction to Motivation
Theories About Motivation
Maslow's Hierarchy of Needs
Psych in Real Life: Growth Mindsets
Introduction to Hunger and Eating
Hunger and Eating
Introduction to Sexual Behavior
Introduction to Emotion
Theories of Emotion
The Biology of Emotions
Seeing Emotion
Putting It Together: Motivation and Emotion
Discussion: Motivation and Emotion
Industrial-Organizational Psychology
Why It Matters: Industrial-Organizational Psychology
Introduction to Industrial-Organizational Psychology Basics
What Is Industrial and Organizational Psychology?
Selecting Employees
Training and Evaluating Employees
Bias and Protections in Hiring
Introduction to The Social Dimension of Work
Leadership and Organization
Human Factors Psychology and Workplace Design
Putting It Together: Industrial-Organizational Psychology
Discussion: Industrial-Organizational Psychology
Psychological Disorders
Why It Matters: Psychological Disorders
Introduction to Psychological Disorders
What are Psychological Disorders?
Diagnosing and Classifying Psychological Disorders
Perspectives on Psychological Disorders
Introduction to Anxiety Disorders, OCD, and PTSD
Phobias and Social Anxiety Disorder
Panic and Generalized Anxiety Disorder
Obsessive-Compulsive and Related Disorders
Introduction to Mood Disorders
The Biological Basis of Mood Disorders
Introduction to Schizophrenia and Dissociative Disorders
Introduction to Personality Disorders
Introduction to Childhood Disorders
Review: Classifying Psychological Disorders
Putting It Together: Psychological Disorders
Discussion: Psychological Disorders
Therapy and Treatment
Why It Matters: Therapy and Treatment
Introduction to Mental Health
Mental Health Treatment in the Past
Mental Health Treatment Today
Introduction to Types of Treatment
Psych in Real Life: Behavior Therapy
Humanistic Therapy and Other Treatments
Evaluating Psychotherapy
Biomedical Therapies
Psych in Real Life: Reconsolidation
Introduction to Treatment Modalities
Group Therapies
Cultural Factors and Therapy
Putting It Together: Treatment and Therapy
Discussion: Therapy and Treatment
Stress, Lifestyle, and Health
Why It Matters: Stress, Lifestyle, and Health
Introduction to Defining Stress
Studying Stress
Stress on the Inside
Introduction to Stress and Illness
Stress and The Immune System
Stress and the Cardiovascular System
Introduction to Regulating Stress and Pursuing Happiness
Regulating Stress
Social Support and Stress Reduction
Psych in Real Life: Habits
Putting It Together: Stress, Lifestyle, and Health
Discussion: Stress, Lifestyle, and Health
Explain observational learning and the steps in the modeling process
Previous sections of this module focused on classical and operant conditioning, which are forms of associative learning. In
, we learn by watching others and then imitating, or modeling, what they do or say. The individuals performing the imitated behavior are called models. Research suggests that this imitative learning involves a specific type of neuron, called a mirror neuron (Hickock, 2010; Rizzolatti, Fadiga, Fogassi, & Gallese, 2002; Rizzolatti, Fogassi, & Gallese, 2006).
Humans and other animals are capable of observational learning. As you will see, the phrase "monkey see, monkey do" really is accurate (Figure 1). The same could be said about other animals. For example, in a study of social learning in chimpanzees, researchers gave juice boxes with straws to two groups of captive chimpanzees. The first group dipped the straw into the juice box, and then sucked on the small amount of juice at the end of the straw. The second group sucked through the straw directly, getting much more juice. When the first group, the "dippers," observed the second group, "the suckers," what do you think happened? All of the "dippers" in the first group switched to sucking through the straws directly. By simply observing the other chimps and modeling their behavior, they learned that this was a more efficient method of getting juice (Yamamoto, Humle, and Tanaka, 2013).
Figure 1. This spider monkey learned to drink water from a plastic bottle by seeing the behavior modeled by a human. (credit: U.S. Air Force, Senior Airman Kasey Close)
Imitation is much more obvious in humans, but is imitation really the sincerest form of flattery? Consider Claire's experience with observational learning. Claire's nine-year-old son, Jay, was getting into trouble at school and was defiant at home. Claire feared that Jay would end up like her brothers, two of whom were in prison. One day, after yet another bad day at school and another negative note from the teacher, Claire, at her wit's end, beat her son with a belt to get him to behave. Later that night, as she put her children to bed, Claire witnessed her four-year-old daughter, Anna, take a belt to her teddy bear and whip it. Claire was horrified, realizing that Anna was imitating her mother. It was then that Claire knew she wanted to discipline her children in a different manner.
Like Tolman, whose experiments with rats suggested a cognitive component to learning, psychologist Albert Bandura's ideas about learning were different from those of strict behaviorists. Bandura and other researchers proposed a brand of behaviorism called social learning theory, which took cognitive processes into account. According to Bandura, pure behaviorism could not explain why learning can take place in the absence of external reinforcement. He felt that internal mental states must also have a role in learning and that observational learning involves much more than imitation. In imitation, a person simply copies what the model does. Observational learning is much more complex. According to Lefrançois (2012) there are several ways that observational learning can occur: You learn a new response. After watching your coworker get chewed out by your boss for coming in late, you start leaving home 10 minutes earlier so that you won't be late. You choose whether or not to imitate the model depending on what you saw happen to the model. Remember Julian and his father? When learning to surf, Julian might watch how his father pops up successfully on his surfboard and then attempt to do the same thing. On the other hand, Julian might learn not to touch a hot stove after watching his father get burned on a stove. You learn a general rule that you can apply to other situations.
Bandura identified three kinds of models: live, verbal, and symbolic. A live model demonstrates a behavior in person, as when Ben stood up on his surfboard so that Julian could see how he did it. A verbal instructional model does not perform the behavior, but instead explains or describes the behavior, as when a soccer coach tells his young players to kick the ball with the side of the foot, not with the toe. A symbolic model can be fictional characters or real people who demonstrate behaviors in books, movies, television shows, video games, or Internet sources (Figure 2).
Figure 2. (a) Yoga students learn by observation as their yoga instructor demonstrates the correct stance and movement for her students (live model). (b) Models don't have to be present for learning to occur: through symbolic modeling, this child can learn a behavior by watching someone demonstrate it on television. (credit a: modification of work by Tony Cecala; credit b: modification of work by Andrew Hyde)
Link to Learning
Latent learning and modeling are used all the time in the world of marketing and advertising. This commercial played for months across the New York, New Jersey, and Connecticut areas, Derek Jeter—an award-winning baseball player for the New York Yankees, is advertising a Ford. The commercial aired in a part of the country where Jeter is an incredibly well-known athlete. He is wealthy, and considered very loyal and good looking. What message are the advertisers sending by having him featured in the ad? How effective do you think it is?
Steps in the Modeling Process
Of course, we don't learn a behavior simply by observing a model. Bandura described specific steps in the process of modeling that must be followed if learning is to be successful: attention, retention, reproduction, and motivation. First, you must be focused on what the model is doing—you have to pay attention. Next, you must be able to retain, or remember, what you observed; this is retention. Then, you must be able to perform the behavior that you observed and committed to memory; this is reproduction. Finally, you must have motivation. You need to want to copy the behavior, and whether or not you are motivated depends on what happened to the model. If you saw that the model was reinforced for her behavior, you will be more motivated to copy her. This is known as
vicarious reinforcement
. On the other hand, if you observed the model being punished, you would be less motivated to copy her. This is called
vicarious punishment
. For example, imagine that four-year-old Allison watched her older sister Kaitlyn playing in their mother's makeup, and then saw Kaitlyn get a time out when their mother came in. After their mother left the room, Allison was tempted to play in the make-up, but she did not want to get a time-out from her mother. What do you think she did? Once you actually demonstrate the new behavior, the reinforcement you receive plays a part in whether or not you will repeat the behavior.
Bandura researched modeling behavior, particularly children's modeling of adults' aggressive and violent behaviors (Bandura, Ross, & Ross, 1961). He conducted an experiment with a five-foot inflatable doll that he called a Bobo doll. In the experiment, children's aggressive behavior was influenced by whether the teacher was punished for her behavior. In one scenario, a teacher acted aggressively with the doll, hitting, throwing, and even punching the doll, while a child watched. There were two types of responses by the children to the teacher's behavior. When the teacher was punished for her bad behavior, the children decreased their tendency to act as she had. When the teacher was praised or ignored (and not punished for her behavior), the children imitated what she did, and even what she said. They punched, kicked, and yelled at the doll.
Watch the following to see a portion of the famous Bobo doll experiment, including an interview with Albert Bandura.
You can view the transcript for "Albert Bandura Bobo Doll experiment.mp4" here (opens in new window).
What are the implications of this study? Bandura concluded that we watch and learn, and that this learning can have both prosocial and antisocial effects. Prosocial (positive) models can be used to encourage socially acceptable behavior. Parents in particular should take note of this finding. If you want your children to read, then read to them. Let them see you reading. Keep books in your home. Talk about your favorite books. If you want your children to be healthy, then let them see you eat right and exercise, and spend time engaging in physical fitness activities together. The same holds true for qualities like kindness, courtesy, and honesty. The main idea is that children observe and learn from their parents, even their parents' morals, so be consistent and toss out the old adage "Do as I say, not as I do," because children tend to copy what you do instead of what you say. Besides parents, many public figures, such as Martin Luther King, Jr. and Mahatma Gandhi, are viewed as prosocial models who are able to inspire global social change. Can you think of someone who has been a prosocial model in your life?
Figure 3. Can video games make us violent? Psychological researchers study this topic. (credit: "woodleywonderworks"/Flickr)
The antisocial effects of observational learning are also worth mentioning. As you saw from the example of Claire at the beginning of this section, her daughter viewed Claire's aggressive behavior and copied it. Research suggests that this may help to explain why abused children often grow up to be abusers themselves (Murrell, Christoff, & Henning, 2007). In fact, about 30% of abused children become abusive parents (U.S. Department of Health & Human Services, 2013). We tend to do what we know. Abused children, who grow up witnessing their parents deal with anger and frustration through violent and aggressive acts, often learn to behave in that manner themselves. Sadly, it's a vicious cycle that's difficult to break.
Some studies suggest that violent television shows, movies, and video games may also have antisocial effects (Figure 3) although further research needs to be done to understand the correlational and causational aspects of media violence and behavior. Some studies have found a link between viewing violence and aggression seen in children (Anderson & Gentile, 2008; Kirsch, 2010; Miller, Grabell, Thomas, Bermann, & Graham-Bermann, 2012). These findings may not be surprising, given that a child graduating from high school has been exposed to around 200,000 violent acts including murder, robbery, torture, bombings, beatings, and rape through various forms of media (Huston et al., 1992). Not only might viewing media violence affect aggressive behavior by teaching people to act that way in real life situations, but it has also been suggested that repeated exposure to violent acts also desensitizes people to it. Psychologists are working to understand this dynamic.
Watch the Crash Course video The Bobo Beatdown for further explanation on observational learning.
Think It Over
What is something you have learned how to do after watching someone else?
Licenses and Attributions (Click to expand)
CC licensed content, Shared previously
Psychology. Authored by: OpenStax College. Located at: https://openstax.org/books/psychology-2e/pages/6-4-observational-learning-modeling. License: CC BY: Attribution. License Terms: Download for free at https://openstax.org/books/psychology-2e/pages/1-introduction
Albert Bandura Bobo Doll experiment. Authored by: kpharden. Located at: https://www.youtube.com/watch?v=Z0iWpSNu3NU. License: CC BY: Attribution. License Terms: Download for free at http://cnx.org/contents/4abf04bf-93a0-45c3-9cbc-2cefd46e68cc@5.48
Modification and adaptation. Provided by: Lumen Learning. License: CC BY: Attribution
type of learning that occurs by watching others
process where the observer sees the model rewarded, making the observer more likely to imitate the model's behavior
process where the observer sees the model punished, making the observer less likely to imitate the model's behavior
Previous: Psych in Real Life: Latent Learning
Next: Psych in Real Life: The Bobo Doll Experiment
General Psychology by OpenStax and Lumen Learning is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.


text:
/******************************************************************************
 *
 * Module Name: utcopy - Internal to external object translation utilities
 *              $Revision: 105 $
 *
 *****************************************************************************/

/******************************************************************************
 *
 * 1. Copyright Notice
 *
 * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp.
 * All rights reserved.
 *
 * 2. License
 *
 * 2.1. This is your license from Intel Corp. under its intellectual property
 * rights.  You may have additional license terms from the party that provided
 * you this software, covering your right to use that party's intellectual
 * property rights.
 *
 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
 * copy of the source code appearing in this file ("Covered Code") an
 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
 * base code distributed originally by Intel ("Original Intel Code") to copy,
 * make derivatives, distribute, use and display any portion of the Covered
 * Code in any form, with the right to sublicense such rights; and
 *
 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
 * license (with the right to sublicense), under only those claims of Intel
 * patents that are infringed by the Original Intel Code, to make, use, sell,
 * offer to sell, and import the Covered Code and derivative works thereof
 * solely to the minimum extent necessary to exercise the above copyright
 * license, and in no event shall the patent license extend to any additions
 * to or modifications of the Original Intel Code.  No other license or right
 * is granted directly or by implication, estoppel or otherwise;
 *
 * The above copyright and patent license is granted only if the following
 * conditions are met:
 *
 * 3. Conditions
 *
 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
 * Redistribution of source code of any substantial portion of the Covered
 * Code or modification with rights to further distribute source must include
 * the above Copyright Notice, the above License, this list of Conditions,
 * and the following Disclaimer and Export Compliance provision.  In addition,
 * Licensee must cause all Covered Code to which Licensee contributes to
 * contain a file documenting the changes Licensee made to create that Covered
 * Code and the date of any change.  Licensee must include in that file the
 * documentation of any changes made by any predecessor Licensee.  Licensee
 * must include a prominent statement that the modification is derived,
 * directly or indirectly, from Original Intel Code.
 *
 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
 * Redistribution of source code of any substantial portion of the Covered
 * Code or modification without rights to further distribute source must
 * include the following Disclaimer and Export Compliance provision in the
 * documentation and/or other materials provided with distribution.  In
 * addition, Licensee may not authorize further sublicense of source of any
 * portion of the Covered Code, and must include terms to the effect that the
 * license from Licensee to its licensee is limited to the intellectual
 * property embodied in the software Licensee provides to its licensee, and
 * not to intellectual property embodied in modifications its licensee may
 * make.
 *
 * 3.3. Redistribution of Executable. Redistribution in executable form of any
 * substantial portion of the Covered Code or modification must reproduce the
 * above Copyright Notice, and the following Disclaimer and Export Compliance
 * provision in the documentation and/or other materials provided with the
 * distribution.
 *
 * 3.4. Intel retains all right, title, and interest in and to the Original
 * Intel Code.
 *
 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
 * Intel shall be used in advertising or otherwise to promote the sale, use or
 * other dealings in products derived from or relating to the Covered Code
 * without prior written authorization from Intel.
 *
 * 4. Disclaimer and Export Compliance
 *
 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
 * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
 * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
 * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
 * PARTICULAR PURPOSE.
 *
 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
 * LIMITED REMEDY.
 *
 * 4.3. Licensee shall not export, either directly or indirectly, any of this
 * software or system incorporating such software without first obtaining any
 * required license or other approval from the U. S. Department of Commerce or
 * any other agency or department of the United States Government.  In the
 * event Licensee exports any such software from the United States or
 * re-exports any such software from a foreign destination, Licensee shall
 * ensure that the distribution and export/re-export of the software is in
 * compliance with all laws, regulations, orders, or other restrictions of the
 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
 * any of its subsidiaries will export/re-export any technical data, process,
 * software, or service, directly or indirectly, to any country for which the
 * United States government or any agency thereof requires an export license,
 * other governmental approval, or letter of assurance, without first obtaining
 * such license, approval or letter.
 *
 *****************************************************************************/

#define __UTCOPY_C__

#include "acpi.h"
#include "amlcode.h"

#define _COMPONENT          ACPI_UTILITIES
        ACPI_MODULE_NAME    ("utcopy")

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIsimpleToEsimple
 *
 * PARAMETERS:  *InternalObject     - Pointer to the object we are examining
 *              *Buffer             - Where the object is returned
 *              *SpaceUsed          - Where the data length is returned
 *
 * RETURN:      Status
 *
 * DESCRIPTION: This function is called to place a simple object in a user
 *              buffer.
 *
 *              The buffer is assumed to have sufficient space for the object.
 *
 ******************************************************************************/

static ACPI_STATUS
AcpiUtCopyIsimpleToEsimple (
    ACPI_OPERAND_OBJECT     *InternalObject,
    ACPI_OBJECT             *ExternalObject,
    UINT8                   *DataSpace,
    ACPI_SIZE               *BufferSpaceUsed)
{
    ACPI_STATUS             Status = AE_OK;

    ACPI_FUNCTION_TRACE ("UtCopyIsimpleToEsimple");

    *BufferSpaceUsed = 0;

    /*
     * Check for NULL object case (could be an uninitialized
     * package element)
     */
    if (!InternalObject)
    {
        return_ACPI_STATUS (AE_OK);
    }

    /* Always clear the external object */

    ACPI_MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT));

    /*
     * In general, the external object will be the same type as
     * the internal object
     */
    ExternalObject->Type = ACPI_GET_OBJECT_TYPE (InternalObject);

    /* However, only a limited number of external types are supported */

    switch (ACPI_GET_OBJECT_TYPE (InternalObject))
    {
    case ACPI_TYPE_STRING:

        ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace;
        ExternalObject->String.Length  = InternalObject->String.Length;
        *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ((ACPI_SIZE) InternalObject->String.Length + 1);

        ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->String.Pointer,
                    (ACPI_SIZE) InternalObject->String.Length + 1);
        break;

    case ACPI_TYPE_BUFFER:

        ExternalObject->Buffer.Pointer = DataSpace;
        ExternalObject->Buffer.Length  = InternalObject->Buffer.Length;
        *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (InternalObject->String.Length);

        ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer,
                    InternalObject->Buffer.Length);
        break;

    case ACPI_TYPE_INTEGER:

        ExternalObject->Integer.Value = InternalObject->Integer.Value;
        break;

    case ACPI_TYPE_LOCAL_REFERENCE:

        /*
         * This is an object reference.  Attempt to dereference it.
         */
        switch (InternalObject->Reference.Opcode)
        {
        case AML_INT_NAMEPATH_OP:

            /* For namepath, return the object handle ("reference") */

        default:
            /*
             * Use the object type of "Any" to indicate a reference
             * to object containing a handle to an ACPI named object.
             */
            ExternalObject->Type = ACPI_TYPE_ANY;
            ExternalObject->Reference.Handle = InternalObject->Reference.Node;
            break;
        }
        break;

    case ACPI_TYPE_PROCESSOR:

        ExternalObject->Processor.ProcId      = InternalObject->Processor.ProcId;
        ExternalObject->Processor.PblkAddress = InternalObject->Processor.Address;
        ExternalObject->Processor.PblkLength  = InternalObject->Processor.Length;
        break;

    case ACPI_TYPE_POWER:

        ExternalObject->PowerResource.SystemLevel =
                            InternalObject->PowerResource.SystemLevel;

        ExternalObject->PowerResource.ResourceOrder =
                            InternalObject->PowerResource.ResourceOrder;
        break;

    default:
        /*
         * There is no corresponding external object type
         */
        return_ACPI_STATUS (AE_SUPPORT);
    }

    return_ACPI_STATUS (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIelementToEelement
 *
 * PARAMETERS:  ACPI_PKG_CALLBACK
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Copy one package element to another package element
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyIelementToEelement (
    UINT8                   ObjectType,
    ACPI_OPERAND_OBJECT     *SourceObject,
    ACPI_GENERIC_STATE      *State,
    void                    *Context)
{
    ACPI_STATUS             Status = AE_OK;
    ACPI_PKG_INFO           *Info = (ACPI_PKG_INFO *) Context;
    ACPI_SIZE               ObjectSpace;
    UINT32                  ThisIndex;
    ACPI_OBJECT             *TargetObject;

    ACPI_FUNCTION_ENTRY ();

    ThisIndex    = State->Pkg.Index;
    TargetObject = (ACPI_OBJECT *)
                    &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex];

    switch (ObjectType)
    {
    case ACPI_COPY_TYPE_SIMPLE:

        /*
         * This is a simple or null object
         */
        Status = AcpiUtCopyIsimpleToEsimple (SourceObject,
                        TargetObject, Info->FreeSpace, &ObjectSpace);
        if (ACPI_FAILURE (Status))
        {
            return (Status);
        }
        break;

    case ACPI_COPY_TYPE_PACKAGE:

        /*
         * Build the package object
         */
        TargetObject->Type              = ACPI_TYPE_PACKAGE;
        TargetObject->Package.Count     = SourceObject->Package.Count;
        TargetObject->Package.Elements  = ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace);

        /*
         * Pass the new package object back to the package walk routine
         */
        State->Pkg.ThisTargetObj = TargetObject;

        /*
         * Save space for the array of objects (Package elements)
         * update the buffer length counter
         */
        ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD (
                            (ACPI_SIZE) TargetObject->Package.Count * sizeof (ACPI_OBJECT));
        break;

    default:
        return (AE_BAD_PARAMETER);
    }

    Info->FreeSpace   += ObjectSpace;
    Info->Length      += ObjectSpace;
    return (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIpackageToEpackage
 *
 * PARAMETERS:  *InternalObject     - Pointer to the object we are returning
 *              *Buffer             - Where the object is returned
 *              *SpaceUsed          - Where the object length is returned
 *
 * RETURN:      Status
 *
 * DESCRIPTION: This function is called to place a package object in a user
 *              buffer.  A package object by definition contains other objects.
 *
 *              The buffer is assumed to have sufficient space for the object.
 *              The caller must have verified the buffer length needed using the
 *              AcpiUtGetObjectSize function before calling this function.
 *
 ******************************************************************************/

static ACPI_STATUS
AcpiUtCopyIpackageToEpackage (
    ACPI_OPERAND_OBJECT     *InternalObject,
    UINT8                   *Buffer,
    ACPI_SIZE               *SpaceUsed)
{
    ACPI_OBJECT             *ExternalObject;
    ACPI_STATUS             Status;
    ACPI_PKG_INFO           Info;

    ACPI_FUNCTION_TRACE ("UtCopyIpackageToEpackage");

    /*
     * First package at head of the buffer
     */
    ExternalObject = ACPI_CAST_PTR (ACPI_OBJECT, Buffer);

    /*
     * Free space begins right after the first package
     */
    Info.Length      = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
    Info.FreeSpace   = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
    Info.ObjectSpace = 0;
    Info.NumPackages = 1;

    ExternalObject->Type             = ACPI_GET_OBJECT_TYPE (InternalObject);
    ExternalObject->Package.Count    = InternalObject->Package.Count;
    ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info.FreeSpace);

    /*
     * Leave room for an array of ACPI_OBJECTS in the buffer
     * and move the free space past it
     */
    Info.Length    += (ACPI_SIZE) ExternalObject->Package.Count *
                            ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
    Info.FreeSpace += ExternalObject->Package.Count *
                            ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));

    Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject,
                            AcpiUtCopyIelementToEelement, &Info);

    *SpaceUsed = Info.Length;
    return_ACPI_STATUS (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIobjectToEobject
 *
 * PARAMETERS:  *InternalObject     - The internal object to be converted
 *              *BufferPtr          - Where the object is returned
 *
 * RETURN:      Status
 *
 * DESCRIPTION: This function is called to build an API object to be returned to
 *              the caller.
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyIobjectToEobject (
    ACPI_OPERAND_OBJECT     *InternalObject,
    ACPI_BUFFER             *RetBuffer)
{
    ACPI_STATUS             Status;

    ACPI_FUNCTION_TRACE ("UtCopyIobjectToEobject");

    if (ACPI_GET_OBJECT_TYPE (InternalObject) == ACPI_TYPE_PACKAGE)
    {
        /*
         * Package object:  Copy all subobjects (including
         * nested packages)
         */
        Status = AcpiUtCopyIpackageToEpackage (InternalObject,
                        RetBuffer->Pointer, &RetBuffer->Length);
    }
    else
    {
        /*
         * Build a simple object (no nested objects)
         */
        Status = AcpiUtCopyIsimpleToEsimple (InternalObject,
                        (ACPI_OBJECT *) RetBuffer->Pointer,
                        ((UINT8 *) RetBuffer->Pointer +
                        ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))),
                        &RetBuffer->Length);
        /*
         * build simple does not include the object size in the length
         * so we add it in here
         */
        RetBuffer->Length += sizeof (ACPI_OBJECT);
    }

    return_ACPI_STATUS (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyEsimpleToIsimple
 *
 * PARAMETERS:  *ExternalObject    - The external object to be converted
 *              *InternalObject    - Where the internal object is returned
 *
 * RETURN:      Status
 *
 * DESCRIPTION: This function copies an external object to an internal one.
 *              NOTE: Pointers can be copied, we don't need to copy data.
 *              (The pointers have to be valid in our address space no matter
 *              what we do with them!)
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyEsimpleToIsimple (
    ACPI_OBJECT             *ExternalObject,
    ACPI_OPERAND_OBJECT     **RetInternalObject)
{
    ACPI_OPERAND_OBJECT     *InternalObject;

    ACPI_FUNCTION_TRACE ("UtCopyEsimpleToIsimple");

    /*
     * Simple types supported are: String, Buffer, Integer
     */
    switch (ExternalObject->Type)
    {
    case ACPI_TYPE_STRING:
    case ACPI_TYPE_BUFFER:
    case ACPI_TYPE_INTEGER:

        InternalObject = AcpiUtCreateInternalObject ((UINT8) ExternalObject->Type);
        if (!InternalObject)
        {
            return_ACPI_STATUS (AE_NO_MEMORY);
        }
        break;

    default:
        /*
         * Whatever other type -- it is not supported
         */
        return_ACPI_STATUS (AE_SUPPORT);
    }

    switch (ExternalObject->Type)
    {

    /* Must COPY string and buffer contents */

    case ACPI_TYPE_STRING:

        InternalObject->String.Pointer = ACPI_MEM_CALLOCATE ((ACPI_SIZE) ExternalObject->String.Length + 1);
        if (!InternalObject->String.Pointer)
        {
            return_ACPI_STATUS (AE_NO_MEMORY);
        }

        ACPI_MEMCPY (InternalObject->String.Pointer,
                     ExternalObject->String.Pointer,
                     ExternalObject->String.Length);

        InternalObject->String.Length  = ExternalObject->String.Length;
        break;

    case ACPI_TYPE_BUFFER:

        InternalObject->Buffer.Pointer = ACPI_MEM_CALLOCATE (ExternalObject->Buffer.Length);
        if (!InternalObject->Buffer.Pointer)
        {
            return_ACPI_STATUS (AE_NO_MEMORY);
        }

        ACPI_MEMCPY (InternalObject->Buffer.Pointer,
                     ExternalObject->Buffer.Pointer,
                     ExternalObject->Buffer.Length);

        InternalObject->Buffer.Length  = ExternalObject->Buffer.Length;
        break;

    case ACPI_TYPE_INTEGER:

        InternalObject->Integer.Value   = ExternalObject->Integer.Value;
        break;

    default:
        /* Other types can't get here */
        break;
    }

    *RetInternalObject = InternalObject;
    return_ACPI_STATUS (AE_OK);
}

#ifdef ACPI_FUTURE_IMPLEMENTATION

/* Code to convert packages that are parameters to control methods */

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyEpackageToIpackage
 *
 * PARAMETERS:  *InternalObject    - Pointer to the object we are returning
 *              *Buffer         - Where the object is returned
 *              *SpaceUsed      - Where the length of the object is returned
 *
 * RETURN:      Status          - the status of the call
 *
 * DESCRIPTION: This function is called to place a package object in a user
 *              buffer.  A package object by definition contains other objects.
 *
 *              The buffer is assumed to have sufficient space for the object.
 *              The caller must have verified the buffer length needed using the
 *              AcpiUtGetObjectSize function before calling this function.
 *
 ******************************************************************************/

static ACPI_STATUS
AcpiUtCopyEpackageToIpackage (
    ACPI_OPERAND_OBJECT     *InternalObject,
    UINT8                   *Buffer,
    UINT32                  *SpaceUsed)
{
    UINT8                   *FreeSpace;
    ACPI_OBJECT             *ExternalObject;
    UINT32                  Length = 0;
    UINT32                  ThisIndex;
    UINT32                  ObjectSpace = 0;
    ACPI_OPERAND_OBJECT     *ThisInternalObj;
    ACPI_OBJECT             *ThisExternalObj;

    ACPI_FUNCTION_TRACE ("UtCopyEpackageToIpackage");

    /*
     * First package at head of the buffer
     */
    ExternalObject = (ACPI_OBJECT *)Buffer;

    /*
     * Free space begins right after the first package
     */
    FreeSpace = Buffer + sizeof(ACPI_OBJECT);

    ExternalObject->Type               = ACPI_GET_OBJECT_TYPE (InternalObject);
    ExternalObject->Package.Count      = InternalObject->Package.Count;
    ExternalObject->Package.Elements   = (ACPI_OBJECT *)FreeSpace;

    /*
     * Build an array of ACPI_OBJECTS in the buffer
     * and move the free space past it
     */
    FreeSpace += ExternalObject->Package.Count * sizeof(ACPI_OBJECT);

    /* Call WalkPackage */

}

#endif /* Future implementation */

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyEobjectToIobject
 *
 * PARAMETERS:  *InternalObject    - The external object to be converted
 *              *BufferPtr      - Where the internal object is returned
 *
 * RETURN:      Status          - the status of the call
 *
 * DESCRIPTION: Converts an external object to an internal object.
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyEobjectToIobject (
    ACPI_OBJECT             *ExternalObject,
    ACPI_OPERAND_OBJECT     **InternalObject)
{
    ACPI_STATUS             Status;

    ACPI_FUNCTION_TRACE ("UtCopyEobjectToIobject");

    if (ExternalObject->Type == ACPI_TYPE_PACKAGE)
    {
        /*
         * Packages as external input to control methods are not supported,
         */
        ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
            "Packages as parameters not implemented!\n"));

        return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
    }

    else
    {
        /*
         * Build a simple object (no nested objects)
         */
        Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject);
    }

    return_ACPI_STATUS (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopySimpleObject
 *
 * PARAMETERS:  SourceDesc          - The internal object to be copied
 *              DestDesc            - New target object
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Simple copy of one internal object to another.  Reference count
 *              of the destination object is preserved.
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopySimpleObject (
    ACPI_OPERAND_OBJECT     *SourceDesc,
    ACPI_OPERAND_OBJECT     *DestDesc)
{
    UINT16                  ReferenceCount;
    ACPI_OPERAND_OBJECT     *NextObject;

    /* Save fields from destination that we don't want to overwrite */

    ReferenceCount = DestDesc->Common.ReferenceCount;
    NextObject = DestDesc->Common.NextObject;

    /* Copy the entire source object over the destination object*/

    ACPI_MEMCPY ((char *) DestDesc, (char *) SourceDesc, sizeof (ACPI_OPERAND_OBJECT));

    /* Restore the saved fields */

    DestDesc->Common.ReferenceCount = ReferenceCount;
    DestDesc->Common.NextObject = NextObject;

    /* Handle the objects with extra data */

    switch (ACPI_GET_OBJECT_TYPE (DestDesc))
    {
    case ACPI_TYPE_BUFFER:

        DestDesc->Buffer.Node = NULL;
        DestDesc->Common.Flags = SourceDesc->Common.Flags;

        /* Fall through to common string/buffer case */
        /*lint -fallthrough */

    case ACPI_TYPE_STRING:

        /*
         * Allocate and copy the actual string if and only if:
         * 1) There is a valid string (length > 0)
         * 2) The string is not static (not in an ACPI table) (in this case,
         *    the actual pointer was already copied above)
         */
        if ((SourceDesc->String.Length) &&
            (!(SourceDesc->Common.Flags & AOPOBJ_STATIC_POINTER)))
        {
            DestDesc->String.Pointer = ACPI_MEM_ALLOCATE (SourceDesc->String.Length);
            if (!DestDesc->String.Pointer)
            {
                return (AE_NO_MEMORY);
            }

            ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer,
                         SourceDesc->String.Length);
        }
        break;

    default:
        /* Nothing to do for other simple objects */
        break;
    }

    return (AE_OK);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIelementToIelement
 *
 * PARAMETERS:  ACPI_PKG_CALLBACK
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Copy one package element to another package element
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyIelementToIelement (
    UINT8                   ObjectType,
    ACPI_OPERAND_OBJECT     *SourceObject,
    ACPI_GENERIC_STATE      *State,
    void                    *Context)
{
    ACPI_STATUS             Status = AE_OK;
    UINT32                  ThisIndex;
    ACPI_OPERAND_OBJECT     **ThisTargetPtr;
    ACPI_OPERAND_OBJECT     *TargetObject;

    ACPI_FUNCTION_ENTRY ();

    ThisIndex     = State->Pkg.Index;
    ThisTargetPtr = (ACPI_OPERAND_OBJECT **)
                        &State->Pkg.DestObject->Package.Elements[ThisIndex];

    switch (ObjectType)
    {
    case 0:

        /*
         * This is a simple object, just copy it
         */
        TargetObject = AcpiUtCreateInternalObject (ACPI_GET_OBJECT_TYPE (SourceObject));
        if (!TargetObject)
        {
            return (AE_NO_MEMORY);
        }

        Status = AcpiUtCopySimpleObject (SourceObject, TargetObject);
        if (ACPI_FAILURE (Status))
        {
            return (Status);
        }

        *ThisTargetPtr = TargetObject;
        break;

    case 1:

        /*
         * This object is a package - go down another nesting level
         * Create and build the package object
         */
        TargetObject = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE);
        if (!TargetObject)
        {
            return (AE_NO_MEMORY);
        }

        TargetObject->Package.Count = SourceObject->Package.Count;
        TargetObject->Common.Flags  = SourceObject->Common.Flags;

        /*
         * Pass the new package object back to the package walk routine
         */
        State->Pkg.ThisTargetObj = TargetObject;

        /*
         * Store the object pointer in the parent package object
         */
        *ThisTargetPtr = TargetObject;
        break;

    default:
        return (AE_BAD_PARAMETER);
    }

    return (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIpackageToIpackage
 *
 * PARAMETERS:  *SourceObj      - Pointer to the source package object
 *              *DestObj        - Where the internal object is returned
 *
 * RETURN:      Status          - the status of the call
 *
 * DESCRIPTION: This function is called to copy an internal package object
 *              into another internal package object.
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyIpackageToIpackage (
    ACPI_OPERAND_OBJECT     *SourceObj,
    ACPI_OPERAND_OBJECT     *DestObj,
    ACPI_WALK_STATE         *WalkState)
{
    ACPI_STATUS             Status = AE_OK;

    ACPI_FUNCTION_TRACE ("UtCopyIpackageToIpackage");

    DestObj->Common.Type    = ACPI_GET_OBJECT_TYPE (SourceObj);
    DestObj->Common.Flags   = SourceObj->Common.Flags;
    DestObj->Package.Count  = SourceObj->Package.Count;

    /*
     * Create the object array and walk the source package tree
     */
    DestObj->Package.Elements = ACPI_MEM_CALLOCATE (
                                    ((ACPI_SIZE) SourceObj->Package.Count + 1) *
                                    sizeof (void *));
    if (!DestObj->Package.Elements)
    {
        ACPI_REPORT_ERROR (
            ("AmlBuildCopyInternalPackageObject: Package allocation failure\n"));
        return_ACPI_STATUS (AE_NO_MEMORY);
    }

    /*
     * Copy the package element-by-element by walking the package "tree".
     * This handles nested packages of arbitrary depth.
     */
    Status = AcpiUtWalkPackageTree (SourceObj, DestObj,
                            AcpiUtCopyIelementToIelement, WalkState);
    if (ACPI_FAILURE (Status))
    {
        /* On failure, delete the destination package object */

        AcpiUtRemoveReference (DestObj);
    }

    return_ACPI_STATUS (Status);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiUtCopyIobjectToIobject
 *
 * PARAMETERS:  WalkState           - Current walk state
 *              SourceDesc          - The internal object to be copied
 *              DestDesc            - Where the copied object is returned
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Copy an internal object to a new internal object
 *
 ******************************************************************************/

ACPI_STATUS
AcpiUtCopyIobjectToIobject (
    ACPI_OPERAND_OBJECT     *SourceDesc,
    ACPI_OPERAND_OBJECT     **DestDesc,
    ACPI_WALK_STATE         *WalkState)
{
    ACPI_STATUS             Status = AE_OK;

    ACPI_FUNCTION_TRACE ("UtCopyIobjectToIobject");

    /* Create the top level object */

    *DestDesc = AcpiUtCreateInternalObject (ACPI_GET_OBJECT_TYPE (SourceDesc));
    if (!*DestDesc)
    {
        return_ACPI_STATUS (AE_NO_MEMORY);
    }

    /* Copy the object and possible subobjects */

    if (ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_PACKAGE)
    {
        Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc,
                        WalkState);
    }
    else
    {
        Status = AcpiUtCopySimpleObject (SourceDesc, *DestDesc);
    }

    return_ACPI_STATUS (Status);
}

redpajama_set_name: RedPajamaGithub


text:
My EA
View all News Items
Inspiring future micro engineers
A program aimed at inspiring the next generation of micro engineers is starting to pay off for an advanced manufacturing hub that develops products across a range of industries.
news_item
Mining, engineering, construction resurgence touted for WA
There is good news for engineering construction in Western Australia, with Deloitte's latest business outlook forecasting slow improvement from here on in.
Major breakthrough with organic semiconductor
Engineers at ANU have invented a semiconductor with organic and inorganic materials that converts electricity into light, is thin and flexible enough to make mobiles bendable, and opens the door to a new generation of devices that will be biodegradable or easily recycled.
Tunnelling excellence Down Under
In an Australian-first, a tunnelling training centre will open in 2019 in Victoria, which will skill workers in delivering tunnelling projects much like the academy established for the UK's Crossrail project.
150 Australian engineering jobs announced by General Motors
General Motors, the parent company of Holden, has announced it will add 150 established and graduate engineers to its Australian operations to work on future technology for autonomous vehicles and electric powertrains.
Aussie software engineers foreshadow cyber breaches
Software engineers from CSIRO's Data61 have identified a new variant of the hardware vulnerability 'Meltdown' that can be exploited to bypass Intel processors to access memory and data.
The sweeter side of engineering work
A Bachelor of Mechanical Engineering student has received an up-close look at the inner mechanics of Australia's sugarcane industry, which she now appreciates is an important sector for engineering.
Australian universities rank high for engineering
Australian universities teaching mining and mineral engineering have ranked highly in the latest ShanghaiRanking results (along with other engineering subjects), with The University of Queensland first in the world, followed by University of Western Australia 5th, University of NSW 7th and Monash...
Biomedical engineers to create unique implants
Budding biomedical engineers will work on innovative technologies to personalise orthopaedic implants to suit individual recipients while collaborating with industry on real-world challenges. The Australian Research Council (ARC) has launched a new industrial transformation training centre at The...
Salini Impreglio investing in Australian engineers
International infrastructure contractor, Salini Impreglio, says the company is considering bringing its own engineering training programs to Australia in a bid to ensure there are enough skilled engineers to build future infrastructure.
Railway Technical Society of Australasia Remove Railway Technical Society of Australasia filter
National Callers
Member Services are available
Mon - Fri 8:30 am - 6:00 pm AEST

redpajama_set_name: RedPajamaCommonCrawl


Today is Saturday. Today, I don't want to think about what this gov't is doing and will continue to do to Venezuela. Our history is long, bloody and ruthless. We want control of oil and we will destroy nations while pretending to "save" them.
God be with the Venezuelan people.
Today, we keep pushing hard for peace and we take the back the good that has been lost piece by piece.
Today, I watched as acting AG Whittaker was questioned about the "misplaced children." He could give a rat's *ss about immigrant kids.
It made me very very sad. Watching his smug attitude and hearing his uncaring responses made me realize he's a perfect poster boy for a sociopath.
These are dark days for humanity. Get your lights out there.
A lady business owner, paid for rooms at hotels to house 100 homeless people. A Pakistani restaurant owner in DC feeds the homeless and the poor allowing the to come in a eat.


text:
/**************************************************************************//**
 * @file     acmp.h
 * @version  V3.00
 * $Revision: 6 $
 * $Date: 1/28/14 11:32a $
 * @brief    M051 series Analog Comparator(ACMP) driver header file
 *
 * @note
 * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __ACMP_H__
#define __ACMP_H__

#ifdef __cplusplus
extern "C"
{
#endif

/** @addtogroup M051_Device_Driver M051 Device Driver
  @{
*/

/** @addtogroup M051_ACMP_Driver ACMP Driver
  @{
*/

/** @addtogroup M051_ACMP_EXPORTED_CONSTANTS ACMP Exported Constants
  @{
*/

/*---------------------------------------------------------------------------------------------------------*/
/* ACMP_CR constant definitions                                                                            */
/*---------------------------------------------------------------------------------------------------------*/
#define ACMP_CR_OUTPUT_INV           (1UL << ACMP_CR_ACMPOINV_Pos) /*!< ACMP_CR setting for ACMP output inverse function. */
#define ACMP_CR_VNEG_BANDGAP         (1UL << ACMP_CR_NEGSEL_Pos)   /*!< ACMP_CR setting for selecting band-gap voltage as the source of ACMP V-. */
#define ACMP_CR_VNEG_PIN             (0UL << ACMP_CR_NEGSEL_Pos)   /*!< ACMP_CR setting for selecting the voltage of ACMP negative input pin as the source of ACMP V-. */
#define ACMP_CR_HYSTERESIS_ENABLE    (1UL << ACMP_CR_HYSEN_Pos)    /*!< ACMP_CR setting for enabling the hysteresis function. */
#define ACMP_CR_HYSTERESIS_DISABLE   (0UL << ACMP_CR_HYSEN_Pos)    /*!< ACMP_CR setting for disabling the hysteresis function. */
#define ACMP_CR_INT_ENABLE           (1UL << ACMP_CR_ACMPIE_Pos)   /*!< ACMP_CR setting for enabling the interrupt function. */
#define ACMP_CR_INT_DISABLE          (0UL << ACMP_CR_ACMPIE_Pos)   /*!< ACMP_CR setting for disabling the interrupt function. */
#define ACMP_CR_ACMP_ENABLE          (1UL << ACMP_CR_ACMPEN_Pos)   /*!< ACMP_CR setting for enabling the ACMP analog circuit. */
#define ACMP_CR_ACMP_DISABLE         (0UL << ACMP_CR_ACMPEN_Pos)   /*!< ACMP_CR setting for disabling the ACMP analog circuit. */

/*@}*/ /* end of group M051_ACMP_EXPORTED_CONSTANTS */

/** @addtogroup M051_ACMP_EXPORTED_FUNCTIONS ACMP Exported Functions
  @{
*/

/**
  * @brief This macro is used to enable output inverse
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_ENABLE_OUTPUT_INVERSE(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] |= ACMP_CR_ACMPOINV_Msk)

/**
  * @brief This macro is used to disable output inverse
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_DISABLE_OUTPUT_INVERSE(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] &= ~ACMP_CR_ACMPOINV_Msk)

/**
  * @brief This macro is used to select ACMP negative input source
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @param[in] u32Src is comparator0 negative input selection.  Including :
  *                  - \ref ACMP_CR_VNEG_PIN
  *                  - \ref ACMP_CR_VNEG_BANDGAP
  * @return None
  */
#define ACMP_SET_NEG_SRC(acmp, u32ChNum, u32Src) ((acmp)->CR[(u32ChNum)%2] = ((acmp)->CR[(u32ChNum)%2] & ~ACMP_CR_NEGSEL_Msk) | (u32Src))

/**
  * @brief This macro is used to enable hysteresis function
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_ENABLE_HYSTERESIS(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] |= ACMP_CR_HYSEN_Msk)

/**
  * @brief This macro is used to disable hysteresis function
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_DISABLE_HYSTERESIS(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] &= ~ACMP_CR_HYSEN_Msk)

/**
  * @brief This macro is used to enable interrupt
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_ENABLE_INT(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] |= ACMP_CR_ACMPIE_Msk)

/**
  * @brief This macro is used to disable interrupt
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_DISABLE_INT(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] &= ~ACMP_CR_ACMPIE_Msk)

/**
  * @brief This macro is used to enable ACMP
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_ENABLE(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] |= ACMP_CR_ACMPEN_Msk)

/**
  * @brief This macro is used to disable ACMP
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return None
  */
#define ACMP_DISABLE(acmp, u32ChNum) ((acmp)->CR[(u32ChNum)%2] &= ~ACMP_CR_ACMPEN_Msk)

/**
  * @brief This macro is used to get ACMP output value
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return  1 or 0
  */
#define ACMP_GET_OUTPUT(acmp, u32ChNum) (((acmp)->SR & (ACMP_SR_ACMPO0_Msk<<((u32ChNum)%2)))?1:0)

/**
  * @brief This macro is used to get ACMP interrupt flag
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return   ACMP interrupt occurred or not
  */
#define ACMP_GET_INT_FLAG(acmp, u32ChNum) (((acmp)->SR & (ACMP_SR_ACMPF0_Msk<<((u32ChNum)%2)))?1:0)

/**
  * @brief This macro is used to clear ACMP interrupt flag
  * @param[in] acmp The base address of ACMP module
  * @param[in] u32ChNum The ACMP number
  * @return   None
  */
#define ACMP_CLR_INT_FLAG(acmp, u32ChNum) ((acmp)->SR = (ACMP_SR_ACMPF0_Msk<<((u32ChNum)%2)))

void ACMP_Open(ACMP_T *, uint32_t u32ChNum, uint32_t u32NegSrc, uint32_t u32HysteresisEn);
void ACMP_Close(ACMP_T *, uint32_t u32ChNum);

/*@}*/ /* end of group M051_ACMP_EXPORTED_FUNCTIONS */

/*@}*/ /* end of group M051_ACMP_Driver */

/*@}*/ /* end of group M051_Device_Driver */

#ifdef __cplusplus
}
#endif

#endif //__ACMP_H__

/*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/


From Trixlegg, a long alpine path with shortcuts through the Spielberggraben leads to the beautiful western slopes that lead up to the wide summit ridge.
Middle to steep northern slopes offer wonderful ski terrain after the long valley trail.
Simple and rather rarely done ski tour. A long Talhatscher ends with an ascent over a steep eastern ridge.
Beautifully structured eastern slopes offer magnificent ski terrain after the long valley trail.
beautiful ski tour over steep eastern slopes.
Clever ski tour summit between Bischof and Gebra.
Easy and relatively safe ski tour in the Aurachgraben.
The quite varied ascent to the plateau does not touch the nearby alpine skiing area of Fieberbrunn. The tour is rarely undertaken, but it is often used by the variant skiers from Lärchfilzkogel.
The Karstein is climbed from the Pletzergraben over its eastern ridge.
From Trixlegg, a long alpine path with shortcuts through the Spielberggraben leads to the east flank of Bürglkopf, which is partly overgrown with the typical terraces of the magnesite mine.


MILAN â€" Starbucks is opening its first store in Italy, betting that premium brews and novelties like a heated marble-topped coffee bar will win customers in a country fond of its daily espresso rituals.
Decades ago, Milan's coffee bars inspired the chain's vision. Now Starbucks is hoping clients will visit its new store, called the Reserve Roastery, to watch beans being roasted, sip coffee or enjoy cocktails at a mezzanine-level bar in a cavernous, former post office near the city's Duomo, or cathedral.
I n Italy, an espresso at a coffee bar is usually a quick morning or after-lunch ritual performed standing up. In many neighborhoods, cafes are practically on every corner, and Italians are on a first-name basis with their trusted barista.
Italy is Starbucks' 78th global market, and the Milan opening comes 20 years after Starbucks opened its first store in Europe, in London. The company has described the Milan store as "the crown jewel of Starbucks global retail footprint." It says it plans more cafes for Milan later this year.
Milan is the first place where Starbucks has opened a store in its Roastery format in untested territory. It opened a Roastery in Seattle, the U.S. city that is home to its corporate headquarters, in 2014, and a second one in Shanghai last year.
Italians are used to marble counters for coffee bars, but Starbucks boasts that it outfitted its counter tops in the Milan store with heating so they won't feel stone cold on chill days. The centerpiece of the Milan store is a 6.5-meter (22-foot) high bronze cask, part of the roasting process.
The company also hopes the store's cocktail bar will be an attraction: Many who work in Milan, Italy's fashion and financial capital, cherish the tradition of meeting friends or colleagues for an "aperitivo," or pre-dinner cocktail, often in cafes.


text:
Cops wrongly raided 84-year-old woman's house for drugs, lawsuit claims
By Chris Franklin | NJ Advance Media for NJ.com
CAMDEN -- A Bridgeton resident is suing a Cumberland County Prosecutor's Office detective in federal court claiming the police wrongly searched her home.
The lawsuit, which only names Cumberland County Prosecutor's Office detective Jose Torres Jr., states that Bridgeton Police Department's Tactical Entry Team entered Mary Bridges' Spruce Street home at 12:24 p.m. on Nov. 16, 2015, to execute a search warrant for a man who was believed to be selling controlled substances illegally.
When the unit searched the home for the items listed on the search warrant, they did not find anything in the house, Bridges, who is 84, claims.
The lawsuit states the Prosecutor Office's Organized Crime Bureau was investigating the man and believed he was selling drugs out of the house. The claim also says that Torres sought out the search warrant on the address where Bridges lives. It was later determined that the man had no connection at all to the house or Bridges, the lawsuit claims
Although she was not injured during the incident, Bridges claims she "has suffered and continues to suffer emotional distress, anxiety, fear of home invasion by the police and mental anguish."
Bridges' lawyer, Peter Korber of Korber Law Firm and Cumberland County Prosecutor Jennifer Webb-McRae did not want to comment on the lawsuit.
Chris Franklin can be reached at cfranklin@njadvancemedia.com. Follow him on Twitter @cfranklinnews. Find NJ.com on Facebook


Sensate Me is your space when seeking abundance, connection and meaning. A place where you are welcomed just as you are. Celebrated. Honoured. Witnessed. Embodying each moment by cultivating rituals of joy. We believe in the intrinsic value of all women and want to support the sacred journey back to your innate self. The soft revolution. The gentle shift for more.
All of our practice is underpinned with strong ethical values around honouring the experience for all. The reclamation. The journey that allows permission for pleasure. For all women, and for all those that love and honour them too.
Sensate Me's range and style offers an ornate simplicity that is authentically grounded in the creative artisan lifestyle. It's organic. Has movement. Is supple. And flows.
We share our love of nature with you. We honour her expansive flow. Her gentle, yet powerful force for change. We see through her seasons that constant shifts occurs. We learn to honour this presence in our lives. Such stunning reverence and grace. We adorn our space with the expression of her botanical creations with gorgeous foliage and flowers. We adore her. And you. Soften yourself and enjoy the divine pleasure of conscious presence. Wrap it around you and revel in the experience of more.
We wish all women experience joy and pleasure in their everyday lives. To fully inhabit moments where they feel seen and valued for all they are. Yet we know there are women amongst us whose journey has been filled with challenge.
We want to create more gorgeous moments for a women who needs more nourishing love and care. So we have decided to cultivate more abundance by offering a $100 gifting card each month. If you know of such a women then we want to know about her. Find your way to the gifting area and let us know more about this gorgeous being.
Sensate Me was created so like-minded women would find connection and meaning within themselves and each other. To cultivate a community of thriving women who embody all of their divine selves. One of the core reasons we created Sensate Me was to create a space where like-minded community could thrive. The Sensate Circle was formed so we could share our skill, knowledge and wisdom with you. Our belief is that women are most powerful when we are journeying together. We support your soft revolution back to your innate self.
Our desire is to inspire generous and positive behaviours in those around us. We want to cultivate abundance for women while increasing the opportunities for ethical consumption. We know that widespread social change can feel daunting. But we urge you not to underestimate the impact of your own individual actions on the person next to you and around the world. Creating connected communities and building capacity for artisans are not passive acts. They are being part of the soft revolution back to ourselves and each other. They are intentions that create powerful change, one decision and action at a time. We can all start somewhere, together.
Our products invite women to journey back to their own innate selves and fully realise desires that are so often lost, forgotten or concealed. It is our intention to create an online space that is inclusive, abundant and sacred. But to do this, we must consider where our products come from and the impact they will have for not only our customers, but upon the world at large. We don't believe it is possible to honour oneself at the expense of another person. So we curated a range of stunning yet ethical products for you to create beautiful moments everyday.
We are constantly seeking out supply partnerships where products are ethically sourced, manufactured and packaged. We also investigate how to reduce our own footprint so that our processes are sustainable where possible. We then apply the value of honouring others across all our business practices. This includes decisions around the financial institutions we use, what electricity company powers our computers, the ingredients contained are in our products, and then how we package and deliver them to you.
To create an inclusive, abundant and sacred online space, we must examine whether our values are congruent with our processes. And where these are unaligned, we must strive to do better. We care strongly about those who make the products we sell and the conditions in which they do this. Because it is our belief that we cannot use these beautiful items to experience our own pleasure, if it is derived from the pain of others.
We are constantly exploring how to make Sensate Me a champion of ethical consumption. However, like most journeys, it is an imperfect, yet conscious, process. We are deeply committed to responding to the needs of our global community and being aware of how our consumption affects the lives of so many people and the environment.


text:
Iran says US must lift sanctions from 1,500 Iranians to fix nuclear deal
A woman, wearing a protective mask amid the COVID-19 pandemic, walks past a mural painted on the outer walls of the former US embassy in the Iranian capital Tehran on September 20, 2020. (AFP)
Published: 25 April ,2021: 11:41 PM GST Updated: 25 April ,2021: 11:51 PM GST
The U.S. must remove sanctions designations for some 1,500 individuals as part of efforts to revive the 2015 nuclear accord, Iran's Deputy Foreign Minister Abbas Araghchi, said in an interview with the state-run ICANA news agency.
Araghchi didn't give more details but Sunday's comments are in line with Iran's demands that the U.S. lift both the sanctions it reimposed on the Islamic Republic after then President Donald Trump abandoned the landmark agreement and hundreds of more penalties added by his administration.
For all the latest headlines follow our Google News channel online or via the app.
Diplomats will convene in Vienna for a third consecutive week from Monday to try to salvage Iran's nuclear accord with world powers as time runs down on an interim monitoring agreement between Tehran and United Nations inspectors at the International Atomic Energy Agency.
Araghchi's comments followed a meeting he had with Iran's majority-hardline parliament about progress in the talks. Many lawmakers oppose President Hassan Rouhani's efforts to resurrect the deal and have tried to influence the negotiations. Arghchi didn't comment about the outcome of that meeting.
Earlier on Sunday the head of the chamber's National Security Commission, Mojtaba Zolnour, said he was leading efforts to prevent the restoration of the nuclear agreement without full parliamentary approval and said lawmakers must be present in the Vienna meetings, the semi-official Tasnim news agency reported.
The European Union will chair the talks in Vienna, where envoys are trying to synchronize a U.S. return to and Iranian compliance with the 2015 agreement. After Trump jettisoned the accord and unilaterally imposed punishing sanctions on Iran, Tehran's government ramped up its nuclear capacity and production of enriched uranium.
Araghchi said the sequencing of the U.S.'s return to the accord and Iran's return to full compliance with its terms, which is the subject of crucial multilateral talks involving both countries in Vienna in the week ahead, won't involve a "step by step format and will be in line with the Islamic Republic's demands.
US lays out elements of sanctions relief for Iran to revive nuclear deal: WSJ
Iran sees Vienna talks moving forward, warns against excessive demands
More 'hard work' needed to get Iran nuclear deal back on track: EU diplomat
US says there have been positive talks with Iran, but 'long road ahead' before deal
Middle East 999 views


we are specializing in the design and manufacture of high-quality plastic injection molds, overmold, two shot mold and injection molded parts for the international market.
KUZEYBORU is hosting the international standards body, and in particular to cover all pipes laboratory standards in the world and has production features. Our company has ISO 9001, ISO 14000 certification. Our products are based on standard EN-TSE-ISO-DIN.
Used now in over 30 countries…doing more and lasting longer. Energy Efficient, Manufacturer's Warranty. Please contact James Thomas for more information.


text:
Twenty Four Hours from Tulsa är en poplåt komponerad av Burt Bacharach och Hal David. Låten sjöngs in av Gene Pitney 1963, och utgavs som singel i oktober samma år. Den har även spelats in av artister som Jay and the Americans, Dusty Springfield (debutalbumet A Girl Called Dusty) och folkduon Ian and Sylvia.

Östen Warnebring skrev en svensk text till låten som då fick titeln "Femton minuter från Eslöv". Låten medtogs på albumet Du gör livet till en sång 1969.

Listplaceringar, Gene Pitney

Referenser

Musiksinglar 1963

redpajama_set_name: RedPajamaWikipedia