aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/w1/00-INDEX
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@sprg.uniroma2.it>2012-02-11 15:41:19 -0500
committerAndrea Bastoni <bastoni@sprg.uniroma2.it>2012-02-11 15:41:19 -0500
commitbcbc4c0486323cdc6d377253b4fc70ab9d030540 (patch)
tree0e3da47cd2dc8a83803cea836d46864e34fdcbfa /Documentation/w1/00-INDEX
parent83b11ea1c6ad113519c488853cf06e626c95a64d (diff)
Add kernel-style events for sched_trace_XXX() functionswip-tracepoints
Enable kernel-style events (tracepoint) for Litmus. Litmus events trace the same functions as the sched_trace_XXX(), but can be enabled independently. So, why another tracing infrastructure then: - Litmus tracepoints can be recorded and analyzed together (single time reference) with all other kernel tracing events (e.g., sched:sched_switch, etc.). It's easier to correlate the effects of kernel events on litmus tasks. - It enables a quick way to visualize and process schedule traces using trace-cmd utility and kernelshark visualizer. Kernelshark lacks unit-trace's schedule-correctness checks, but it enables a fast view of schedule traces and it has several filtering options (for all kernel events, not only Litmus').
Diffstat (limited to 'Documentation/w1/00-INDEX')
0 files changed, 0 insertions, 0 deletions
'>264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
#ifndef __OSD_ATTRIBUTES_H__
#define __OSD_ATTRIBUTES_H__

#include "osd_protocol.h"

/*
 * Contains types and constants that define attribute pages and attribute
 * numbers and their data types.
 */

#define ATTR_SET(pg, id, l, ptr) \
	{ .attr_page = pg, .attr_id = id, .len = l, .val_ptr = ptr }

#define ATTR_DEF(pg, id, l) ATTR_SET(pg, id, l, NULL)

/* osd-r10 4.7.3 Attributes pages */
enum {
	OSD_APAGE_OBJECT_FIRST		= 0x0,
	OSD_APAGE_OBJECT_DIRECTORY	= 0,
	OSD_APAGE_OBJECT_INFORMATION	= 1,
	OSD_APAGE_OBJECT_QUOTAS		= 2,
	OSD_APAGE_OBJECT_TIMESTAMP	= 3,
	OSD_APAGE_OBJECT_COLLECTIONS	= 4,
	OSD_APAGE_OBJECT_SECURITY	= 5,
	OSD_APAGE_OBJECT_LAST		= 0x2fffffff,

	OSD_APAGE_PARTITION_FIRST	= 0x30000000,
	OSD_APAGE_PARTITION_DIRECTORY	= OSD_APAGE_PARTITION_FIRST + 0,
	OSD_APAGE_PARTITION_INFORMATION = OSD_APAGE_PARTITION_FIRST + 1,
	OSD_APAGE_PARTITION_QUOTAS	= OSD_APAGE_PARTITION_FIRST + 2,
	OSD_APAGE_PARTITION_TIMESTAMP	= OSD_APAGE_PARTITION_FIRST + 3,
	OSD_APAGE_PARTITION_ATTR_ACCESS = OSD_APAGE_PARTITION_FIRST + 4,
	OSD_APAGE_PARTITION_SECURITY	= OSD_APAGE_PARTITION_FIRST + 5,
	OSD_APAGE_PARTITION_LAST	= 0x5FFFFFFF,

	OSD_APAGE_COLLECTION_FIRST	= 0x60000000,
	OSD_APAGE_COLLECTION_DIRECTORY	= OSD_APAGE_COLLECTION_FIRST + 0,
	OSD_APAGE_COLLECTION_INFORMATION = OSD_APAGE_COLLECTION_FIRST + 1,
	OSD_APAGE_COLLECTION_TIMESTAMP	= OSD_APAGE_COLLECTION_FIRST + 3,
	OSD_APAGE_COLLECTION_SECURITY	= OSD_APAGE_COLLECTION_FIRST + 5,
	OSD_APAGE_COLLECTION_LAST	= 0x8FFFFFFF,

	OSD_APAGE_ROOT_FIRST		= 0x90000000,
	OSD_APAGE_ROOT_DIRECTORY	= OSD_APAGE_ROOT_FIRST + 0,
	OSD_APAGE_ROOT_INFORMATION	= OSD_APAGE_ROOT_FIRST + 1,
	OSD_APAGE_ROOT_QUOTAS		= OSD_APAGE_ROOT_FIRST + 2,
	OSD_APAGE_ROOT_TIMESTAMP	= OSD_APAGE_ROOT_FIRST + 3,
	OSD_APAGE_ROOT_SECURITY		= OSD_APAGE_ROOT_FIRST + 5,
	OSD_APAGE_ROOT_LAST		= 0xBFFFFFFF,

	OSD_APAGE_RESERVED_TYPE_FIRST	= 0xC0000000,
	OSD_APAGE_RESERVED_TYPE_LAST	= 0xEFFFFFFF,

	OSD_APAGE_COMMON_FIRST		= 0xF0000000,
	OSD_APAGE_COMMON_LAST		= 0xFFFFFFFD,

	OSD_APAGE_CURRENT_COMMAND	= 0xFFFFFFFE,

	OSD_APAGE_REQUEST_ALL		= 0xFFFFFFFF,
};

/* subcategories of attr pages within each range above */
enum {
	OSD_APAGE_STD_FIRST		= 0x0,
	OSD_APAGE_STD_DIRECTORY		= 0,
	OSD_APAGE_STD_INFORMATION	= 1,
	OSD_APAGE_STD_QUOTAS		= 2,
	OSD_APAGE_STD_TIMESTAMP		= 3,
	OSD_APAGE_STD_COLLECTIONS	= 4,
	OSD_APAGE_STD_POLICY_SECURITY	= 5,
	OSD_APAGE_STD_LAST		= 0x0000007F,

	OSD_APAGE_RESERVED_FIRST	= 0x00000080,
	OSD_APAGE_RESERVED_LAST		= 0x00007FFF,

	OSD_APAGE_OTHER_STD_FIRST	= 0x00008000,
	OSD_APAGE_OTHER_STD_LAST	= 0x0000EFFF,

	OSD_APAGE_PUBLIC_FIRST		= 0x0000F000,
	OSD_APAGE_PUBLIC_LAST		= 0x0000FFFF,

	OSD_APAGE_APP_DEFINED_FIRST	= 0x00010000,
	OSD_APAGE_APP_DEFINED_LAST	= 0x1FFFFFFF,

	OSD_APAGE_VENDOR_SPECIFIC_FIRST	= 0x20000000,
	OSD_APAGE_VENDOR_SPECIFIC_LAST	= 0x2FFFFFFF,
};

enum {
	OSD_ATTR_PAGE_IDENTIFICATION = 0, /* in all pages 40 bytes */
};

struct page_identification {
	u8 vendor_identification[8];
	u8 page_identification[32];
}  __packed;

struct osd_attr_page_header {
	__be32 page_number;
	__be32 page_length;
} __packed;

/* 7.1.2.8 Root Information attributes page (OSD_APAGE_ROOT_INFORMATION) */
enum {
	OSD_ATTR_RI_OSD_SYSTEM_ID            = 0x3,   /* 20       */
	OSD_ATTR_RI_VENDOR_IDENTIFICATION    = 0x4,   /* 8        */
	OSD_ATTR_RI_PRODUCT_IDENTIFICATION   = 0x5,   /* 16       */
	OSD_ATTR_RI_PRODUCT_MODEL            = 0x6,   /* 32       */
	OSD_ATTR_RI_PRODUCT_REVISION_LEVEL   = 0x7,   /* 4        */
	OSD_ATTR_RI_PRODUCT_SERIAL_NUMBER    = 0x8,   /* variable */
	OSD_ATTR_RI_OSD_NAME                 = 0x9,   /* variable */
	OSD_ATTR_RI_MAX_CDB_CONTINUATION_LEN = 0xA,   /* 4        */
	OSD_ATTR_RI_TOTAL_CAPACITY           = 0x80,  /* 8        */
	OSD_ATTR_RI_USED_CAPACITY            = 0x81,  /* 8        */
	OSD_ATTR_RI_NUMBER_OF_PARTITIONS     = 0xC0,  /* 8        */
	OSD_ATTR_RI_CLOCK                    = 0x100, /* 6        */
	OARI_DEFAULT_ISOLATION_METHOD        = 0X110, /* 1        */
	OARI_SUPPORTED_ISOLATION_METHODS     = 0X111, /* 32       */

	OARI_DATA_ATOMICITY_GUARANTEE                   = 0X120,   /* 8       */
	OARI_DATA_ATOMICITY_ALIGNMENT                   = 0X121,   /* 8       */
	OARI_ATTRIBUTES_ATOMICITY_GUARANTEE             = 0X122,   /* 8       */
	OARI_DATA_ATTRIBUTES_ATOMICITY_MULTIPLIER       = 0X123,   /* 1       */

	OARI_MAXIMUM_SNAPSHOTS_COUNT                    = 0X1C1,    /* 0 or 4 */
	OARI_MAXIMUM_CLONES_COUNT                       = 0X1C2,    /* 0 or 4 */
	OARI_MAXIMUM_BRANCH_DEPTH                       = 0X1CC,    /* 0 or 4 */
	OARI_SUPPORTED_OBJECT_DUPLICATION_METHOD_FIRST  = 0X200,    /* 0 or 4 */
	OARI_SUPPORTED_OBJECT_DUPLICATION_METHOD_LAST   = 0X2ff,    /* 0 or 4 */
	OARI_SUPPORTED_TIME_OF_DUPLICATION_METHOD_FIRST = 0X300,    /* 0 or 4 */
	OARI_SUPPORTED_TIME_OF_DUPLICATION_METHOD_LAST  = 0X30F,    /* 0 or 4 */
	OARI_SUPPORT_FOR_DUPLICATED_OBJECT_FREEZING     = 0X310,    /* 0 or 4 */
	OARI_SUPPORT_FOR_SNAPSHOT_REFRESHING            = 0X311,    /* 0 or 1 */
	OARI_SUPPORTED_CDB_CONTINUATION_DESC_TYPE_FIRST = 0X7000001,/* 0 or 4 */
	OARI_SUPPORTED_CDB_CONTINUATION_DESC_TYPE_LAST  = 0X700FFFF,/* 0 or 4 */
};
/* Root_Information_attributes_page does not have a get_page structure */

/* 7.1.2.9 Partition Information attributes page
 * (OSD_APAGE_PARTITION_INFORMATION)
 */
enum {
	OSD_ATTR_PI_PARTITION_ID            = 0x1,     /* 8        */
	OSD_ATTR_PI_USERNAME                = 0x9,     /* variable */
	OSD_ATTR_PI_USED_CAPACITY           = 0x81,    /* 8        */
	OSD_ATTR_PI_USED_CAPACITY_INCREMENT = 0x84,    /* 0 or 8   */
	OSD_ATTR_PI_NUMBER_OF_OBJECTS       = 0xC1,    /* 8        */

	OSD_ATTR_PI_ACTUAL_DATA_SPACE                      = 0xD1, /* 0 or 8 */
	OSD_ATTR_PI_RESERVED_DATA_SPACE                    = 0xD2, /* 0 or 8 */
	OSD_ATTR_PI_DEFAULT_SNAPSHOT_DUPLICATION_METHOD    = 0x200,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_CLONE_DUPLICATION_METHOD       = 0x201,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_SP_TIME_OF_DUPLICATION         = 0x300,/* 0 or 4 */
	OSD_ATTR_PI_DEFAULT_CLONE_TIME_OF_DUPLICATION      = 0x301,/* 0 or 4 */
};
/* Partition Information attributes page does not have a get_page structure */

/* 7.1.2.10 Collection Information attributes page
 * (OSD_APAGE_COLLECTION_INFORMATION)
 */
enum {
	OSD_ATTR_CI_PARTITION_ID           = 0x1,       /* 8        */
	OSD_ATTR_CI_COLLECTION_OBJECT_ID   = 0x2,       /* 8        */
	OSD_ATTR_CI_USERNAME               = 0x9,       /* variable */
	OSD_ATTR_CI_COLLECTION_TYPE        = 0xA,       /* 1        */
	OSD_ATTR_CI_USED_CAPACITY          = 0x81,      /* 8        */
};
/* Collection Information attributes page does not have a get_page structure */

/* 7.1.2.11 User Object Information attributes page
 * (OSD_APAGE_OBJECT_INFORMATION)
 */
enum {
	OSD_ATTR_OI_PARTITION_ID         = 0x1,       /* 8        */
	OSD_ATTR_OI_OBJECT_ID            = 0x2,       /* 8        */
	OSD_ATTR_OI_USERNAME             = 0x9,       /* variable */
	OSD_ATTR_OI_USED_CAPACITY        = 0x81,      /* 8        */
	OSD_ATTR_OI_LOGICAL_LENGTH       = 0x82,      /* 8        */
	SD_ATTR_OI_ACTUAL_DATA_SPACE     = 0XD1,      /* 0 OR 8   */
	SD_ATTR_OI_RESERVED_DATA_SPACE   = 0XD2,      /* 0 OR 8   */
};
/* Object Information attributes page does not have a get_page structure */

/* 7.1.2.12 Root Quotas attributes page (OSD_APAGE_ROOT_QUOTAS) */
enum {
	OSD_ATTR_RQ_DEFAULT_MAXIMUM_USER_OBJECT_LENGTH     = 0x1,      /* 8  */
	OSD_ATTR_RQ_PARTITION_CAPACITY_QUOTA               = 0x10001,  /* 8  */
	OSD_ATTR_RQ_PARTITION_OBJECT_COUNT                 = 0x10002,  /* 8  */
	OSD_ATTR_RQ_PARTITION_COLLECTIONS_PER_USER_OBJECT  = 0x10081,  /* 4  */
	OSD_ATTR_RQ_PARTITION_COUNT                        = 0x20002,  /* 8  */
};

struct Root_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=R+2, size=0x24 */
	__be64 default_maximum_user_object_length;
	__be64 partition_capacity_quota;
	__be64 partition_object_count;
	__be64 partition_collections_per_user_object;
	__be64 partition_count;
}  __packed;

/* 7.1.2.13 Partition Quotas attributes page (OSD_APAGE_PARTITION_QUOTAS)*/
enum {
	OSD_ATTR_PQ_DEFAULT_MAXIMUM_USER_OBJECT_LENGTH  = 0x1,        /* 8 */
	OSD_ATTR_PQ_CAPACITY_QUOTA                      = 0x10001,    /* 8 */
	OSD_ATTR_PQ_OBJECT_COUNT                        = 0x10002,    /* 8 */
	OSD_ATTR_PQ_COLLECTIONS_PER_USER_OBJECT         = 0x10081,    /* 4 */
};

struct Partition_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=P+2, size=0x1C */
	__be64 default_maximum_user_object_length;
	__be64 capacity_quota;
	__be64 object_count;
	__be64 collections_per_user_object;
}  __packed;

/* 7.1.2.14 User Object Quotas attributes page (OSD_APAGE_OBJECT_QUOTAS) */
enum {
	OSD_ATTR_OQ_MAXIMUM_LENGTH  = 0x1,        /* 8 */
};

struct Object_Quotas_attributes_page {
	struct osd_attr_page_header hdr; /* id=U+2, size=0x8 */
	__be64 maximum_length;
}  __packed;

/* 7.1.2.15 Root Timestamps attributes page (OSD_APAGE_ROOT_TIMESTAMP) */
enum {
	OSD_ATTR_RT_ATTRIBUTES_ACCESSED_TIME  = 0x2,        /* 6 */
	OSD_ATTR_RT_ATTRIBUTES_MODIFIED_TIME  = 0x3,        /* 6 */
	OSD_ATTR_RT_TIMESTAMP_BYPASS          = 0xFFFFFFFE, /* 1 */
};

struct root_timestamps_attributes_page {
	struct osd_attr_page_header hdr; /* id=R+3, size=0xD */
	struct osd_timestamp attributes_accessed_time;
	struct osd_timestamp attributes_modified_time;
	u8 timestamp_bypass;
}  __packed;

/* 7.1.2.16 Partition Timestamps attributes page
 * (OSD_APAGE_PARTITION_TIMESTAMP)
 */
enum {
	OSD_ATTR_PT_CREATED_TIME              = 0x1,        /* 6 */
	OSD_ATTR_PT_ATTRIBUTES_ACCESSED_TIME  = 0x2,        /* 6 */
	OSD_ATTR_PT_ATTRIBUTES_MODIFIED_TIME  = 0x3,        /* 6 */
	OSD_ATTR_PT_DATA_ACCESSED_TIME        = 0x4,        /* 6 */
	OSD_ATTR_PT_DATA_MODIFIED_TIME        = 0x5,        /* 6 */
	OSD_ATTR_PT_TIMESTAMP_BYPASS          = 0xFFFFFFFE, /* 1 */
};

struct partition_timestamps_attributes_page {
	struct osd_attr_page_header hdr; /* id=P+3, size=0x1F */
	struct osd_timestamp created_time;
	struct osd_timestamp attributes_accessed_time;
	struct osd_timestamp attributes_modified_time;
	struct osd_timestamp data_accessed_time;