---
name: "sc_ProcFileGrp"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_ProcFileGrp"
---

# sc\_ProcFileGrp(3)

The ProcFileGrp concrete class provides an implementation of FileGrp for a single processor.

## NAME

sc::ProcFileGrp - The **ProcFileGrp** concrete class provides an implementation of **FileGrp** for a single processor.

## SYNOPSIS

`#include <fileproc.h>`

Inherits **sc::FileGrp**.

### Public Member Functions

**ProcFileGrp** (const **Ref**\< **KeyVal** \> &)\
 **ProcFileGrp** \* **clone** ()\
 Clones the given **FileGrp**. The new **FileGrp** may need to be initialized additionally.  void **set\_localsize** (size\_t)\
 Set the size of locally held data.  void \* **localdata** ()\
 void \* **obtain\_readwrite** (**distsize\_t** **offset**, int **size**)\
 Only one thread can have an unreleased obtain\_readwrite at a time.  void \* **obtain\_readonly** (**distsize\_t** **offset**, int **size**)\
 This gives read access to the file location. No locking is done.  void \* **obtain\_writeonly** (**distsize\_t** **offset**, int **size**)\
 This gives write access to the data location. No locking is done.  void **release\_readonly** (void \*data, **distsize\_t** **offset**, int **size**)\
 This is called when read access is no longer needed.  void **release\_writeonly** (void \*data, **distsize\_t** **offset**, int **size**)\
 This is called when write access is no longer needed.  void **release\_readwrite** (void \*data, **distsize\_t** **offset**, int **size**)\
 This is called when read/write access is no longer needed.  void **sync** ()\
 Synchronizes all the nodes.

### Additional Inherited Members

## Detailed Description

The **ProcFileGrp** concrete class provides an implementation of **FileGrp** for a single processor.

## Member Function Documentation

### ProcFileGrp \* sc::ProcFileGrp::clone ()` [virtual]`

Clones the given **FileGrp**. The new **FileGrp** may need to be initialized additionally.

Implements **sc::FileGrp**.

### void \* sc::ProcFileGrp::obtain\_readonly (distsize\_t offset, int size)` [virtual]`

This gives read access to the file location. No locking is done.

Implements **sc::FileGrp**.

### void \* sc::ProcFileGrp::obtain\_readwrite (distsize\_t offset, int size)` [virtual]`

Only one thread can have an unreleased obtain\_readwrite at a time. The actual file region locked can be larger than that requested. If the file region is already locked this will block. For this reason, data should be held as read/write for as short a time as possible.

Implements **sc::FileGrp**.

### void \* sc::ProcFileGrp::obtain\_writeonly (distsize\_t offset, int size)` [virtual]`

This gives write access to the data location. No locking is done.

Implements **sc::FileGrp**.

### void sc::ProcFileGrp::release\_readonly (void \* data, distsize\_t offset, int size)` [virtual]`

This is called when read access is no longer needed.

Implements **sc::FileGrp**.

### void sc::ProcFileGrp::release\_readwrite (void \* data, distsize\_t offset, int size)` [virtual]`

This is called when read/write access is no longer needed. The data will be unlocked.

Implements **sc::FileGrp**.

### void sc::ProcFileGrp::release\_writeonly (void \* data, distsize\_t offset, int size)` [virtual]`

This is called when write access is no longer needed.

Implements **sc::FileGrp**.

### void sc::ProcFileGrp::set\_localsize (size\_t)` [virtual]`

Set the size of locally held data. When data is accessed using a global offset counting starts at node 0 and proceeds up to node **n()** - 1.

Implements **sc::FileGrp**.

### void sc::ProcFileGrp::sync ()` [virtual]`

Synchronizes all the nodes. Consider using this when the way you you access data changes.

Implements **sc::FileGrp**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
