File: rtas_resource.c

package info (click to toggle)
openhpi 2.14.1-1.2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 20,380 kB
  • sloc: ansic: 187,087; cpp: 32,188; sh: 10,415; makefile: 4,467; perl: 1,529
file content (84 lines) | stat: -rw-r--r-- 2,958 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*      -*- linux-c -*-
 *
 * (C) Copyright IBM Corp. 2005
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  This
 * file and program are licensed under a BSD style license.  See
 * the Copying file included with the OpenHPI distribution for
 * full licensing terms.
 *
 * Author(s):
 *        Renier Morales <renier@openhpi.org>
 *        Daniel de Araujo <ddearauj@us.ibm.com>
 */

#include <rtas_resource.h>
#include <oh_handler.h>
#include <oh_event.h>
#include <oh_domain.h>
#include <oh_utils.h>

SaErrorT rtas_set_resource_tag(void *hnd,
                               SaHpiResourceIdT id,
                               SaHpiTextBufferT *tag)
{
        struct oh_handler_state *h = hnd;
        SaHpiRptEntryT *rptentry = NULL;
        SaErrorT error = SA_OK;
        struct oh_event *e = NULL;

        if (!hnd) return SA_ERR_HPI_INTERNAL_ERROR;

        rptentry = oh_get_resource_by_id(h->rptcache, id);
        if (!rptentry) return SA_ERR_HPI_NOT_PRESENT;

        error = oh_append_textbuffer(&rptentry->ResourceTag, (char *)tag->Data);
        if (error) return error;

        e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));
        e->hid = h->hid;
        e->event.EventType = SAHPI_ET_RESOURCE;
        e->event.Source = rptentry->ResourceId;
        e->event.Severity = rptentry->ResourceSeverity;
        e->event.Timestamp = SAHPI_TIME_UNSPECIFIED;
        e->event.EventDataUnion.ResourceEvent.ResourceEventType = SAHPI_RESE_RESOURCE_ADDED;
        e->resource = *rptentry;
        oh_evt_queue_push(h->eventq, e);

        return SA_OK;
}

SaErrorT rtas_set_resource_severity(void *hnd,
                                    SaHpiResourceIdT id,
                                    SaHpiSeverityT sev)
{
        struct oh_handler_state *h = hnd;
        SaHpiRptEntryT *rptentry = NULL;
        struct oh_event *e = NULL;

        if (!hnd) return SA_ERR_HPI_INTERNAL_ERROR;

        rptentry = oh_get_resource_by_id(h->rptcache, id);
        if (!rptentry) return SA_ERR_HPI_NOT_PRESENT;

        rptentry->ResourceSeverity = sev;

        e = (struct oh_event *)g_malloc0(sizeof(struct oh_event));
        e->event.EventType = SAHPI_ET_RESOURCE;
        e->event.Source = rptentry->ResourceId;
        e->event.Severity = rptentry->ResourceSeverity;
        e->event.Timestamp = SAHPI_TIME_UNSPECIFIED;
        e->event.EventDataUnion.ResourceEvent.ResourceEventType = SAHPI_RESE_RESOURCE_ADDED;
        e->resource = *rptentry;
        oh_evt_queue_push(h->eventq, e);

        return SA_OK;
}


void * oh_set_resource_tag (void *, SaHpiResourceIdT, SaHpiTextBufferT *)
        __attribute__ ((weak, alias("rtas_set_resource_tag")));
void * oh_set_resource_severity (void *, SaHpiResourceIdT, SaHpiSeverityT)
        __attribute__ ((weak, alias("rtas_set_resource_severity")));