~thopiekar/arm-mali/libump-sunxi

« back to all changes in this revision

Viewing changes to src/ump_ref_drv.h

  • Committer: Luc Verhaegen
  • Date: 2014-03-25 21:04:12 UTC
  • Revision ID: git-v1:fa5ad94ac2873793dcca65dafc3ea211de5e7226
import ump r2p4 source

Signed-off-by: Luc Verhaegen <libv@skynet.be>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2010, 2012 ARM Limited. All rights reserved.
 
3
 * 
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 * 
 
8
 *       http://www.apache.org/licenses/LICENSE-2.0
 
9
 * 
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
/**
 
18
 * @file ump_ref_drv.h
 
19
 *
 
20
 * Reference driver extensions to the UMP user space API for allocating UMP memory
 
21
 */
 
22
 
 
23
#ifndef _UNIFIED_MEMORY_PROVIDER_REF_DRV_H_
 
24
#define _UNIFIED_MEMORY_PROVIDER_REF_DRV_H_
 
25
 
 
26
#include "ump.h"
 
27
 
 
28
#ifdef __cplusplus
 
29
extern "C" {
 
30
#endif
 
31
 
 
32
typedef enum
 
33
{
 
34
        /* This enum must match with the IOCTL enum in ump_ioctl.h */
 
35
        UMP_REF_DRV_CONSTRAINT_NONE = 0,
 
36
        UMP_REF_DRV_CONSTRAINT_PHYSICALLY_LINEAR = 1,
 
37
        UMP_REF_DRV_CONSTRAINT_USE_CACHE = 4,
 
38
} ump_alloc_constraints;
 
39
 
 
40
/** Allocate an UMP handle containing a memory buffer.
 
41
 * Input: Size: The minimum size for the allocation.
 
42
 * Usage: If this is UMP_REF_DRV_CONSTRAINT_USE_CACHE, the allocation is mapped as cached by the cpu.
 
43
 *        If it is UMP_REF_DRV_CONSTRAINT_NONE it is mapped as noncached.
 
44
 *        The flag UMP_REF_DRV_CONSTRAINT_PHYSICALLY_LINEAR is not supported.*/
 
45
UMP_API_EXPORT ump_handle ump_ref_drv_allocate(unsigned long size, ump_alloc_constraints usage);
 
46
 
 
47
typedef enum
 
48
{
 
49
        UMP_MSYNC_CLEAN = 0 ,
 
50
        UMP_MSYNC_CLEAN_AND_INVALIDATE = 1,
 
51
        UMP_MSYNC_READOUT_CACHE_ENABLED = 128,
 
52
} ump_cpu_msync_op;
 
53
 
 
54
/** Flushing cache for an ump_handle.
 
55
 * The function will always CLEAN_AND_INVALIDATE as long as the \a op is not UMP_MSYNC_READOUT_CACHE_ENABLED.
 
56
 * If so it will only report back if the given ump_handle is cacheable.
 
57
 * At the momement the implementation does not use \a address or \a size.
 
58
 * Return value is 1 if cache is enabled, and 0 if it is disabled for the given allocation.*/
 
59
UMP_API_EXPORT int ump_cpu_msync_now(ump_handle mem, ump_cpu_msync_op op, void* address, int size);
 
60
 
 
61
 
 
62
#ifdef __cplusplus
 
63
}
 
64
#endif
 
65
 
 
66
#endif /*_UNIFIED_MEMORY_PROVIDER_REF_DRV_H_ */